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

Contents of /eclass/kernel-2.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.151 - (hide annotations) (download)
Wed Nov 2 00:01:05 2005 UTC (13 years, 7 months ago) by vapier
Branch: MAIN
Changes since 1.150: +3 -3 lines
make the run a little more quiet

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 vapier 1.151 # $Header: /var/cvsroot/gentoo-x86/eclass/kernel-2.eclass,v 1.150 2005/10/13 15:13:14 swegener 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 vapier 1.60 kernel_header_destdir() {
251 vapier 1.75 [[ ${CTARGET} == ${CHOST} ]] \
252 vapier 1.60 && echo /usr/include \
253     || echo /usr/${CTARGET}/include
254     }
255    
256 plasmaroo 1.33 # Capture the sources type and set DEPENDs
257 hollow 1.95 if [[ ${ETYPE} == sources ]]; then
258 johnm 1.1 DEPEND="!build? ( sys-apps/sed
259 johnm 1.93 >=sys-devel/binutils-2.11.90.0.31 )
260 swegener 1.135 doc? ( app-text/docbook-sgml-utils
261 swegener 1.129 app-text/xmlto )"
262 johnm 1.147 RDEPEND="!build? ( >=sys-libs/ncurses-5.2
263     sys-devel/make )
264     virtual/dev-manager"
265 lu_zero 1.62
266 johnm 1.78 PROVIDE="virtual/linux-sources"
267     kernel_is gt 2 4 && PROVIDE="${PROVIDE} virtual/alsa"
268 johnm 1.147
269 johnm 1.72 SLOT="${PVR}"
270 johnm 1.147 DESCRIPTION="Sources for the ${KV_MAJOR}.${KV_MINOR} linux kernel"
271 swegener 1.142 IUSE="symlink build doc"
272 hollow 1.95 elif [[ ${ETYPE} == headers ]]; then
273 johnm 1.72 DESCRIPTION="Linux system headers"
274 swegener 1.142 IUSE=""
275 swegener 1.135
276 hollow 1.95 if [[ ${CTARGET} = ${CHOST} ]]; then
277 johnm 1.72 DEPEND="!virtual/os-headers"
278 vapier 1.137 PROVIDE="virtual/os-headers"
279 johnm 1.72 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 vapier 1.136 local KARCH=$(tc-arch-kernel)
293 johnm 1.117
294 vapier 1.136 # When cross-compiling, we need to set the ARCH/CROSS_COMPILE
295     # variables properly or bad things happen !
296     local xmakeopts="ARCH=${KARCH}"
297 vapier 1.151 if [[ ${CTARGET} != ${CHOST} ]] ; then
298 vapier 1.136 xmakeopts="${xmakeopts} CROSS_COMPILE=${CTARGET}-"
299 vapier 1.151 elif type -p ${CHOST}-ar > /dev/null ; then
300 vapier 1.136 xmakeopts="${xmakeopts} CROSS_COMPILE=${CHOST}-"
301     fi
302    
303     cd "${S}"
304 lu_zero 1.62 # this file is required for other things to build properly,
305 johnm 1.1 # so we autogenerate it
306 vapier 1.145 make -s mrproper ${xmakeopts} || die "make mrproper failed"
307     make -s symlinks ${xmakeopts} || die "make symlinks failed"
308     make -s include/linux/version.h ${xmakeopts} || die "make include/linux/version.h failed"
309 johnm 1.1 echo ">>> version.h compiled successfully."
310     }
311    
312     universal_unpack() {
313 plasmaroo 1.33 cd ${WORKDIR}
314     unpack linux-${OKV}.tar.bz2
315 hollow 1.98 if [[ "${OKV}" != "${KV_FULL}" ]]; then
316     mv linux-${OKV} linux-${KV_FULL} \
317 johnm 1.55 || die "Unable to move source tree to ${KV_FULL}."
318 hollow 1.98 fi
319 vapier 1.136 cd "${S}"
320 lu_zero 1.62
321 johnm 1.1 # remove all backup files
322     find . -iname "*~" -exec rm {} \; 2> /dev/null
323    
324 johnm 1.78 # fix a problem on ppc where TOUT writes to /usr/src/linux breaking sandbox
325 lu_zero 1.62 use ppc && \
326 johnm 1.93 sed -ie 's|TOUT := .tmp_gas_check|TOUT := $(T).tmp_gas_check|' \
327 vapier 1.136 "${S}"/arch/ppc/Makefile
328 johnm 1.1 }
329    
330     unpack_set_extraversion() {
331 vapier 1.136 cd "${S}"
332 dsd 1.104 sed -i -e "s:^\(EXTRAVERSION =\).*:\1 ${EXTRAVERSION}:" Makefile
333 johnm 1.93 cd ${OLDPWD}
334 johnm 1.1 }
335    
336 dsd 1.104 # Should be done after patches have been applied
337     # Otherwise patches that modify the same area of Makefile will fail
338     unpack_fix_install_path() {
339 vapier 1.136 cd "${S}"
340 dsd 1.104 sed -i -e 's:#export\tINSTALL_PATH:export\tINSTALL_PATH:' Makefile
341     }
342    
343 johnm 1.107 unpack_fix_docbook() {
344     if [[ -d ${S}/Documentation/DocBook ]]; then
345 vapier 1.136 cd "${S}"/Documentation/DocBook
346 johnm 1.107 sed -ie "s:db2:docbook2:g" Makefile
347     cd ${OLDPWD}
348     fi
349     }
350    
351 johnm 1.1 # Compile Functions
352     #==============================================================
353     compile_headers() {
354 johnm 1.125 # Since KBUILD_OUTPUT shouldnt be used when compiling headers, lets unset it
355     # if it exists.
356     [[ -n ${KBUILD_OUTPUT} ]] && unset KBUILD_OUTPUT
357    
358 swegener 1.135 # if we couldnt obtain HOSTCFLAGS from the Makefile,
359 vapier 1.75 # then set it to something sane
360 vapier 1.136 local HOSTCFLAGS=$(getfilevar HOSTCFLAGS "${S}"/Makefile)
361 vapier 1.75 HOSTCFLAGS=${HOSTCFLAGS:--Wall -Wstrict-prototypes -O2 -fomit-frame-pointer}
362    
363     # Kernel ARCH != portage ARCH
364 vapier 1.86 local KARCH=$(tc-arch-kernel)
365 vapier 1.75
366 swegener 1.135 # When cross-compiling, we need to set the ARCH/CROSS_COMPILE
367 vapier 1.75 # variables properly or bad things happen !
368     local xmakeopts="ARCH=${KARCH}"
369 johnm 1.93 if [[ ${CTARGET} != ${CHOST} ]]; then
370 vapier 1.75 xmakeopts="${xmakeopts} CROSS_COMPILE=${CTARGET}-"
371 hollow 1.95 elif type -p ${CHOST}-ar; then
372 vapier 1.75 xmakeopts="${xmakeopts} CROSS_COMPILE=${CHOST}-"
373     fi
374    
375 johnm 1.93 if kernel_is 2 4; then
376 vapier 1.75 yes "" | make oldconfig ${xmakeopts}
377 johnm 1.72 echo ">>> make oldconfig complete"
378 vapier 1.75 use sparc && make dep ${xmakeopts}
379 hollow 1.95 elif kernel_is 2 6; then
380 johnm 1.72 # autoconf.h isnt generated unless it already exists. plus, we have
381     # no guarantee that any headers are installed on the system...
382 vapier 1.75 [[ -f ${ROOT}/usr/include/linux/autoconf.h ]] \
383 johnm 1.72 || touch include/linux/autoconf.h
384    
385 plasmaroo 1.105 # if K_DEFCONFIG isn't set, force to "defconfig"
386     # needed by mips
387     if [[ -z ${K_DEFCONFIG} ]]; then
388     K_DEFCONFIG="defconfig"
389     fi
390    
391 johnm 1.72 # if there arent any installed headers, then there also isnt an asm
392     # symlink in /usr/include/, and make defconfig will fail, so we have
393     # to force an include path with $S.
394 vapier 1.75 HOSTCFLAGS="${HOSTCFLAGS} -I${S}/include/"
395     ln -sf asm-${KARCH} "${S}"/include/asm
396 plasmaroo 1.105 make ${K_DEFCONFIG} HOSTCFLAGS="${HOSTCFLAGS}" ${xmakeopts} || die "defconfig failed"
397 vapier 1.75 make prepare HOSTCFLAGS="${HOSTCFLAGS}" ${xmakeopts} || die "prepare failed"
398 eradicator 1.100 make prepare-all HOSTCFLAGS="${HOSTCFLAGS}" ${xmakeopts} || die "prepare failed"
399 johnm 1.72 fi
400 johnm 1.1 }
401    
402 spock 1.37 compile_manpages() {
403 johnm 1.54 einfo "Making manpages ..."
404 vapier 1.75 env -u ARCH make mandocs
405 spock 1.37 }
406    
407 johnm 1.1 # install functions
408     #==============================================================
409     install_universal() {
410     #fix silly permissions in tarball
411     cd ${WORKDIR}
412     chown -R root:root *
413     chmod -R a+r-w+X,u+w *
414 johnm 1.93 cd ${OLDPWD}
415 johnm 1.1 }
416    
417     install_headers() {
418 johnm 1.72 local ddir=$(kernel_header_destdir)
419 vapier 1.60
420 vapier 1.136 cd "${S}"
421 vapier 1.60 dodir ${ddir}/linux
422 vapier 1.136 cp -ax "${S}"/include/linux/* ${D}/${ddir}/linux
423 vapier 1.60 rm -rf ${D}/${ddir}/linux/modules
424 lu_zero 1.62
425 vapier 1.137 # Handle multilib headers and crap
426     local multi_dirs="" multi_defs=""
427 eradicator 1.99 case $(tc-arch-kernel) in
428     sparc64)
429 vapier 1.137 multi_dirs="sparc sparc64"
430     multi_defs="!__arch64__ __arch64__"
431 eradicator 1.99 ;;
432     x86_64)
433 vapier 1.137 multi_dirs="i386 x86_64"
434     multi_defs="__i386__ __x86_64__"
435 eradicator 1.99 ;;
436 dostrow 1.131 ppc64)
437 vapier 1.137 multi_dirs="ppc ppc64"
438     multi_defs="!__powerpc64__ __powerpc64__"
439     ;;
440     s390x)
441     multi_dirs="s390 s390x"
442     multi_defs="!__s390x__ __s390x__"
443 dostrow 1.131 ;;
444 vapier 1.114 arm)
445     dodir ${ddir}/asm
446 vapier 1.139 cp -ax "${S}"/include/asm/* "${D}"/${ddir}/asm
447     [[ ! -e ${D}/${ddir}/asm/arch ]] && ln -sf arch-ebsa285 "${D}"/${ddir}/asm/arch
448     [[ ! -e ${D}/${ddir}/asm/proc ]] && ln -sf proc-armv "${D}"/${ddir}/asm/proc
449 vapier 1.114 ;;
450 eradicator 1.99 *)
451     dodir ${ddir}/asm
452 vapier 1.136 cp -ax "${S}"/include/asm/* ${D}/${ddir}/asm
453 eradicator 1.99 ;;
454     esac
455 vapier 1.137 if [[ -n ${multi_dirs} ]] ; then
456     local d ml_inc=""
457     for d in ${multi_dirs} ; do
458     dodir ${ddir}/asm-${d}
459     cp -ax "${S}"/include/asm-${d}/* ${D}/${ddir}/asm-${d}/ || die "cp asm-${d} failed"
460    
461     ml_inc="${ml_inc} ${multi_defs%% *}:${ddir}/asm-${d}"
462     multi_defs=${multi_defs#* }
463     done
464 swegener 1.140 create_ml_includes ${ddir}/asm ${ml_inc}
465 vapier 1.137 fi
466 eradicator 1.76
467 johnm 1.93 if kernel_is 2 6; then
468 vapier 1.60 dodir ${ddir}/asm-generic
469 vapier 1.136 cp -ax "${S}"/include/asm-generic/* ${D}/${ddir}/asm-generic
470 johnm 1.12 fi
471 eradicator 1.99
472 vapier 1.103 # clean up
473     find "${D}" -name '*.orig' -exec rm -f {} \;
474    
475 johnm 1.93 cd ${OLDPWD}
476 johnm 1.1 }
477    
478     install_sources() {
479 johnm 1.93 local doc docs file
480 johnm 1.1
481 vapier 1.136 cd "${S}"
482 johnm 1.12 dodir /usr/src
483 johnm 1.54 echo ">>> Copying sources ..."
484 johnm 1.93
485 johnm 1.27 file="$(find ${WORKDIR} -iname "docs" -type d)"
486 johnm 1.93 if [[ -n ${file} ]]; then
487     for file in $(find ${file} -type f); do
488 vapier 1.136 echo "${file//*docs\/}" >> "${S}"/patches.txt
489     echo "===================================================" >> "${S}"/patches.txt
490     cat ${file} >> "${S}"/patches.txt
491     echo "===================================================" >> "${S}"/patches.txt
492     echo "" >> "${S}"/patches.txt
493 johnm 1.1 done
494 johnm 1.12 fi
495 johnm 1.1
496 johnm 1.93 if [[ ! -f ${S}/patches.txt ]]; then
497 johnm 1.12 # patches.txt is empty so lets use our ChangeLog
498 johnm 1.93 [[ -f ${FILESDIR}/../ChangeLog ]] && \
499     echo "Please check the ebuild ChangeLog for more details." \
500 vapier 1.136 > "${S}"/patches.txt
501 johnm 1.12 fi
502    
503 vapier 1.145 if use doc ; then
504     install_manpages
505    
506     for doc in ${UNIPATCH_DOCS}; do [[ -f ${doc} ]] && docs="${docs} ${doc}"; done
507     if [[ -f ${S}/patches.txt ]]; then docs="${docs} ${S}/patches.txt"; fi
508     [[ -n ${docs} ]] && dodoc ${docs}
509     fi
510 johnm 1.12
511     mv ${WORKDIR}/linux* ${D}/usr/src
512 johnm 1.1 }
513    
514 spock 1.37 install_manpages() {
515 dsd 1.123 kernel_is lt 2 5 && return
516 johnm 1.149
517     local myfiles="Documentation/DocBook/Makefile"
518     kernel_is lt 2 6 12 && myfiles="scripts/makeman ${myfiles}"
519 swegener 1.150
520 johnm 1.149 sed -ie "s#/usr/local/man#${D}/usr/share/man#g" ${myfiles}
521 spock 1.39 ebegin "Installing manpages"
522 johnm 1.78 env -u ARCH make installmandocs
523 spock 1.37 eend $?
524 johnm 1.149 sed -ie "s#${D}/usr/share/man#/usr/local/man#g" ${myfiles}
525 spock 1.37 }
526    
527 johnm 1.1 # pkg_preinst functions
528     #==============================================================
529     preinst_headers() {
530 vapier 1.60 local ddir=$(kernel_header_destdir)
531 johnm 1.72 [[ -L ${ddir}/linux ]] && rm ${ddir}/linux
532     [[ -L ${ddir}/asm ]] && rm ${ddir}/asm
533 johnm 1.1 }
534    
535     # pkg_postinst functions
536     #==============================================================
537     postinst_sources() {
538 vapier 1.80 local MAKELINK=0
539 swegener 1.135
540 johnm 1.84 # if we have USE=symlink, then force K_SYMLINK=1
541     use symlink && K_SYMLINK=1
542    
543 johnm 1.78 # if we are to forcably symlink, delete it if it already exists first.
544 johnm 1.93 if [[ -n ${K_SYMLINK} ]]; then
545 vapier 1.80 [[ -h ${ROOT}usr/src/linux ]] && rm ${ROOT}usr/src/linux
546 johnm 1.78 MAKELINK=1
547     fi
548 swegener 1.135
549 johnm 1.78 # if the link doesnt exist, lets create it
550 vapier 1.80 [[ ! -h ${ROOT}usr/src/linux ]] && MAKELINK=1
551 swegener 1.135
552 johnm 1.93 if [[ ${MAKELINK} == 1 ]]; then
553 johnm 1.89 cd ${ROOT}usr/src
554     ln -sf linux-${KV_FULL} linux
555     cd ${OLDPWD}
556     fi
557 johnm 1.1
558     # Don't forget to make directory for sysfs
559 johnm 1.111 [[ ! -d ${ROOT}sys ]] && kernel_is 2 6 && mkdir ${ROOT}sys
560 johnm 1.1
561     echo
562     einfo "After installing a new kernel of any version, it is important"
563     einfo "that you have the appropriate /etc/modules.autoload.d/kernel-X.Y"
564     einfo "created (X.Y is the first 2 parts of your new kernel version)"
565     echo
566     einfo "For example, this kernel will require:"
567     einfo "/etc/modules.autoload.d/kernel-${KV_MAJOR}.${KV_MINOR}"
568     echo
569 r3pek 1.113 einfo "If you are upgrading from a previous kernel, you may be interested"
570     einfo "in the following documents:"
571     einfo " - General upgrade guide: http://www.gentoo.org/doc/en/kernel-upgrade.xml"
572     kernel_is_2_6 && einfo " - 2.4 to 2.6 migration guide: http://www.gentoo.org/doc/en/migration-to-2.6.xml"
573 johnm 1.138 if kernel_is ge 2 6 13; then
574     ewarn "As of 2.6.13 the support for devfs has been removed."
575     ewarn "You will be required to either manage a static /dev"
576     ewarn "or to ensure that udev is starting on boot."
577     fi
578 r3pek 1.113 echo
579 lu_zero 1.62
580 johnm 1.2 # if K_EXTRAEINFO is set then lets display it now
581 hollow 1.95 if [[ -n ${K_EXTRAEINFO} ]]; then
582 johnm 1.2 echo ${K_EXTRAEINFO} | fmt |
583 hollow 1.95 while read -s ELINE; do einfo "${ELINE}"; done
584 plasmaroo 1.33 fi
585    
586 iggy 1.7 # if K_EXTRAEWARN is set then lets display it now
587 hollow 1.95 if [[ -n ${K_EXTRAEWARN} ]]; then
588 iggy 1.7 echo ${K_EXTRAEWARN} | fmt |
589 hollow 1.95 while read -s ELINE; do ewarn "${ELINE}"; done
590 iggy 1.7 fi
591 johnm 1.1 }
592    
593 johnm 1.12 postinst_headers() {
594 johnm 1.72 einfo "Kernel headers are usually only used when recompiling glibc, as such, following the installation"
595     einfo "of newer headers, it is advised that you re-merge glibc as follows:"
596     einfo "emerge glibc"
597     einfo "Failure to do so will cause glibc to not make use of newer features present in the updated kernel"
598     einfo "headers."
599 johnm 1.12 }
600    
601     # pkg_setup functions
602     #==============================================================
603     setup_headers() {
604 vapier 1.86 [[ -z ${H_SUPPORTEDARCH} ]] && H_SUPPORTEDARCH=${PN/-*/}
605 hollow 1.95 for i in ${H_SUPPORTEDARCH}; do
606 vapier 1.87 [[ $(tc-arch) == "${i}" ]] && H_ACCEPT_ARCH="yes"
607 johnm 1.12 done
608 lu_zero 1.62
609 johnm 1.93 if [[ ${H_ACCEPT_ARCH} != "yes" ]]; then
610 johnm 1.12 echo
611 vapier 1.106 eerror "This version of ${PN} does not support $(tc-arch)."
612 johnm 1.12 eerror "Please merge the appropriate sources, in most cases"
613 vapier 1.106 eerror "(but not all) this will be called $(tc-arch)-headers."
614     die "Package unsupported for $(tc-arch)"
615 johnm 1.12 fi
616     }
617    
618 johnm 1.1 # unipatch
619     #==============================================================
620     unipatch() {
621 johnm 1.108 local i x y z extention PIPE_CMD UNIPATCH_DROP KPATCH_DIR PATCH_DEPTH ELINE
622 johnm 1.122 local STRICT_COUNT PATCH_LEVEL myLC_ALL myLANG
623 swegener 1.135
624 johnm 1.78 # set to a standard locale to ensure sorts are ordered properly.
625     myLC_ALL="${LC_ALL}"
626 johnm 1.122 myLANG="${LANG}"
627 johnm 1.78 LC_ALL="C"
628 johnm 1.122 LANG=""
629 johnm 1.1
630     [ -z "${KPATCH_DIR}" ] && KPATCH_DIR="${WORKDIR}/patches/"
631     [ ! -d ${KPATCH_DIR} ] && mkdir -p ${KPATCH_DIR}
632    
633 johnm 1.41 # We're gonna need it when doing patches with a predefined patchlevel
634     shopt -s extglob
635    
636 johnm 1.54 # This function will unpack all passed tarballs, add any passed patches, and remove any passed patchnumbers
637 johnm 1.1 # usage can be either via an env var or by params
638 johnm 1.54 # although due to the nature we pass this within this eclass
639     # it shall be by param only.
640     # -z "${UNIPATCH_LIST}" ] && UNIPATCH_LIST="${@}"
641     UNIPATCH_LIST="${@}"
642 johnm 1.1
643     #unpack any passed tarballs
644 hollow 1.95 for i in ${UNIPATCH_LIST}; do
645     if [ -n "$(echo ${i} | grep -e "\.tar" -e "\.tbz" -e "\.tgz")" ]; then
646 johnm 1.1 extention=${i/*./}
647 johnm 1.41 extention=${extention/:*/}
648 johnm 1.1 case ${extention} in
649     tbz2) PIPE_CMD="tar -xvjf";;
650     bz2) PIPE_CMD="tar -xvjf";;
651     tgz) PIPE_CMD="tar -xvzf";;
652     gz) PIPE_CMD="tar -xvzf";;
653     *) eerror "Unrecognized tarball compression"
654     die "Unrecognized tarball compression";;
655     esac
656    
657 hollow 1.95 if [ -n "${UNIPATCH_STRICTORDER}" ]; then
658 johnm 1.110 unset z
659 johnm 1.121 STRICT_COUNT=$((10#${STRICT_COUNT} + 1))
660 johnm 1.108 for((y=0; y<$((6 - ${#STRICT_COUNT})); y++));
661     do z="${z}0";
662     done
663 r3pek 1.112 PATCH_ORDER="${z}${STRICT_COUNT}"
664 johnm 1.108
665 r3pek 1.112 mkdir -p ${KPATCH_DIR}/${PATCH_ORDER}/
666     ${PIPE_CMD} ${i/:*/} -C ${KPATCH_DIR}/${PATCH_ORDER}/ 1>/dev/null
667 johnm 1.16 else
668 johnm 1.41 ${PIPE_CMD} ${i/:*/} -C ${KPATCH_DIR} 1>/dev/null
669 johnm 1.16 fi
670    
671 hollow 1.95 if [ $? == 0 ]; then
672 johnm 1.1 einfo "${i/*\//} unpacked"
673 johnm 1.54 [ -n "$(echo ${i} | grep ':')" ] && echo ">>> Strict patch levels not currently supported for tarballed patchsets"
674 johnm 1.1 else
675 johnm 1.41 eerror "Failed to unpack ${i/:*/}"
676 johnm 1.1 die "unable to unpack patch tarball"
677     fi
678 johnm 1.16 else
679 johnm 1.25 extention=${i/*./}
680 johnm 1.41 extention=${extention/:*/}
681 johnm 1.25 PIPE_CMD=""
682     case ${extention} in
683     bz2) PIPE_CMD="bzip2 -dc";;
684     patch) PIPE_CMD="cat";;
685     diff) PIPE_CMD="cat";;
686     gz|Z|z) PIPE_CMD="gzip -dc";;
687     ZIP|zip) PIPE_CMD="unzip -p";;
688 johnm 1.41 *) UNIPATCH_DROP="${UNIPATCH_DROP} ${i/:*/}";;
689 johnm 1.25 esac
690 johnm 1.41
691     PATCH_LEVEL=${i/*([^:])?(:)}
692     i=${i/:*/}
693 johnm 1.25 x=${i/*\//}
694     x=${x/\.${extention}/}
695 lu_zero 1.62
696 hollow 1.95 if [ -n "${PIPE_CMD}" ]; then
697     if [ ! -r "${i}" ]; then
698 johnm 1.29 echo
699     eerror "FATAL: unable to locate:"
700     eerror "${i}"
701 johnm 1.54 eerror "for read-only. The file either has incorrect permissions"
702     eerror "or does not exist."
703 johnm 1.29 die Unable to locate ${i}
704     fi
705 lu_zero 1.62
706 hollow 1.95 if [ -n "${UNIPATCH_STRICTORDER}" ]; then
707 johnm 1.110 unset z
708 johnm 1.121 STRICT_COUNT=$((10#${STRICT_COUNT} + 1))
709 johnm 1.108 for((y=0; y<$((6 - ${#STRICT_COUNT})); y++));
710     do z="${z}0";
711     done
712 r3pek 1.112 PATCH_ORDER="${z}${STRICT_COUNT}"
713 johnm 1.108
714 r3pek 1.112 mkdir -p ${KPATCH_DIR}/${PATCH_ORDER}/
715     $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${PATCH_ORDER}/${x}.patch${PATCH_LEVEL})
716 johnm 1.29 else
717 johnm 1.41 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${x}.patch${PATCH_LEVEL})
718 johnm 1.29 fi
719 johnm 1.25 fi
720 johnm 1.16 fi
721 johnm 1.1 done
722    
723     #populate KPATCH_DIRS so we know where to look to remove the excludes
724     x=${KPATCH_DIR}
725     KPATCH_DIR=""
726 hollow 1.95 for i in $(find ${x} -type d | sort -n); do
727 johnm 1.1 KPATCH_DIR="${KPATCH_DIR} ${i}"
728     done
729    
730     #so now lets get rid of the patchno's we want to exclude
731 johnm 1.19 UNIPATCH_DROP="${UNIPATCH_EXCLUDE} ${UNIPATCH_DROP}"
732 hollow 1.95 for i in ${UNIPATCH_DROP}; do
733 johnm 1.55 ebegin "Excluding Patch #${i}"
734 hollow 1.95 for x in ${KPATCH_DIR}; do rm -f ${x}/${i}* 2>/dev/null; done
735 johnm 1.55 eend $?
736 johnm 1.1 done
737    
738     # and now, finally, we patch it :)
739 hollow 1.95 for x in ${KPATCH_DIR}; do
740     for i in $(find ${x} -maxdepth 1 -iname "*.patch*" -or -iname "*.diff*" | sort -n); do
741 johnm 1.25 STDERR_T="${T}/${i/*\//}"
742 johnm 1.41 STDERR_T="${STDERR_T/.patch*/.err}"
743    
744 lu_zero 1.62 [ -z ${i/*.patch*/} ] && PATCH_DEPTH=${i/*.patch/}
745 r3pek 1.112 #[ -z ${i/*.diff*/} ] && PATCH_DEPTH=${i/*.diff/}
746 johnm 1.41
747 hollow 1.96 if [ -z "${PATCH_DEPTH}" ]; then PATCH_DEPTH=0; fi
748 johnm 1.41
749     ebegin "Applying ${i/*\//} (-p${PATCH_DEPTH}+)"
750 hollow 1.95 while [ ${PATCH_DEPTH} -lt 5 ]; do
751 plasmaroo 1.33 echo "Attempting Dry-run:" >> ${STDERR_T}
752 johnm 1.25 echo "cmd: patch -p${PATCH_DEPTH} --dry-run -f < ${i}" >> ${STDERR_T}
753 johnm 1.54 echo "=======================================================" >> ${STDERR_T}
754 hollow 1.95 if [ $(patch -p${PATCH_DEPTH} --dry-run -f < ${i} >> ${STDERR_T}) $? -eq 0 ]; then
755 johnm 1.25 echo "Attempting patch:" > ${STDERR_T}
756     echo "cmd: patch -p${PATCH_DEPTH} -f < ${i}" >> ${STDERR_T}
757 johnm 1.54 echo "=======================================================" >> ${STDERR_T}
758 hollow 1.95 if [ $(patch -p${PATCH_DEPTH} -f < ${i} >> ${STDERR_T}) "$?" -eq 0 ]; then
759 johnm 1.1 eend 0
760 johnm 1.25 rm ${STDERR_T}
761 johnm 1.1 break
762     else
763     eend 1
764     eerror "Failed to apply patch ${i/*\//}"
765 johnm 1.54 eerror "Please attach ${STDERR_T} to any bug you may post."
766 johnm 1.1 die "Failed to apply ${i/*\//}"
767     fi
768     else
769     PATCH_DEPTH=$((${PATCH_DEPTH} + 1))
770     fi
771     done
772 hollow 1.95 if [ ${PATCH_DEPTH} -eq 5 ]; then
773 johnm 1.1 eend 1
774 johnm 1.54 eerror "Please attach ${STDERR_T} to any bug you may post."
775 johnm 1.1 die "Unable to dry-run patch."
776     fi
777     done
778     done
779 johnm 1.43
780 johnm 1.144 # This is a quick, and kind of nasty hack to deal with UNIPATCH_DOCS which
781     # sit in KPATCH_DIR's. This is handled properly in the unipatch rewrite,
782     # which is why I'm not taking too much time over this.
783     local tmp
784     for i in ${UNIPATCH_DOCS}; do
785     tmp="${tmp} ${i//*\/}"
786     cp -f ${i} ${T}/
787     done
788     UNIPATCH_DOCS="${tmp}"
789 swegener 1.146
790 johnm 1.43 # clean up KPATCH_DIR's - fixes bug #53610
791 hollow 1.95 for x in ${KPATCH_DIR}; do rm -Rf ${x}; done
792 swegener 1.135
793 johnm 1.78 LC_ALL="${myLC_ALL}"
794 johnm 1.122 LANG="${myLANG}"
795 johnm 1.1 }
796    
797 johnm 1.74 # getfilevar accepts 2 vars as follows:
798     # getfilevar <VARIABLE> <CONFIGFILE>
799     # pulled from linux-info
800    
801     getfilevar() {
802 johnm 1.93 local workingdir basefname basedname xarch=$(tc-arch-kernel)
803 johnm 1.74
804 johnm 1.93 if [[ -z ${1} ]] && [[ ! -f ${2} ]]; then
805 johnm 1.74 echo -e "\n"
806     eerror "getfilevar requires 2 variables, with the second a valid file."
807     eerror " getfilevar <VARIABLE> <CONFIGFILE>"
808     else
809     workingdir=${PWD}
810     basefname=$(basename ${2})
811     basedname=$(dirname ${2})
812     unset ARCH
813 swegener 1.135
814 johnm 1.74 cd ${basedname}
815     echo -e "include ${basefname}\ne:\n\t@echo \$(${1})" | \
816 johnm 1.119 make ${BUILD_FIXES} -s -f - e 2>/dev/null
817 johnm 1.74 cd ${workingdir}
818 swegener 1.135
819 johnm 1.74 ARCH=${xarch}
820     fi
821     }
822    
823 johnm 1.28 detect_arch() {
824     # This function sets ARCH_URI and ARCH_PATCH
825     # with the neccessary info for the arch sepecific compatibility
826     # patchsets.
827 lu_zero 1.62
828 johnm 1.93 local ALL_ARCH LOOP_ARCH COMPAT_URI i
829 plasmaroo 1.33
830     # COMPAT_URI is the contents of ${ARCH}_URI
831     # ARCH_URI is the URI for all the ${ARCH}_URI patches
832     # ARCH_PATCH is ARCH_URI broken into files for UNIPATCH
833    
834     ARCH_URI=""
835     ARCH_PATCH=""
836 vapier 1.145 ALL_ARCH="ALPHA AMD64 ARM HPPA IA64 M68K MIPS PPC PPC64 S390 SH SPARC X86"
837 johnm 1.31
838 hollow 1.95 for LOOP_ARCH in ${ALL_ARCH}; do
839 johnm 1.31 COMPAT_URI="${LOOP_ARCH}_URI"
840     COMPAT_URI="${!COMPAT_URI}"
841 lu_zero 1.62
842 vapier 1.86 [[ -n ${COMPAT_URI} ]] && \
843 johnm 1.55 ARCH_URI="${ARCH_URI} $(echo ${LOOP_ARCH} | tr '[:upper:]' '[:lower:]')? ( ${COMPAT_URI} )"
844 lu_zero 1.62
845 johnm 1.93 if [[ ${LOOP_ARCH} == "$(echo $(tc-arch-kernel) | tr '[:lower:]' '[:upper:]')" ]]; then
846     for i in ${COMPAT_URI}; do
847 plasmaroo 1.33 ARCH_PATCH="${ARCH_PATCH} ${DISTDIR}/${i/*\//}"
848     done
849     fi
850 johnm 1.31 done
851 johnm 1.28 }
852    
853 johnm 1.72 # sparc nastiness
854     #==============================================================
855     # This script generates the files in /usr/include/asm for sparc systems
856     # during installation of sys-kernel/linux-headers.
857     # Will no longer be needed when full 64 bit support is used on sparc64
858     # systems.
859     #
860     # Shamefully ripped from Debian
861     # ----------------------------------------------------------------------
862    
863     # Idea borrowed from RedHat's kernel package
864    
865 eradicator 1.76 # This is gonna get replaced by something in multilib.eclass soon...
866     # --eradicator
867 johnm 1.72 generate_sparc_asm() {
868     local name
869    
870     cd $1 || die
871     mkdir asm
872    
873     for h in `( ls asm-sparc; ls asm-sparc64 ) | grep '\.h$' | sort -u`; do
874     name="$(echo $h | tr a-z. A-Z_)"
875     # common header
876     echo "/* All asm/ files are generated and point to the corresponding
877     * file in asm-sparc or asm-sparc64.
878     */
879    
880     #ifndef __SPARCSTUB__${name}__
881     #define __SPARCSTUB__${name}__
882     " > asm/${h}
883    
884     # common for sparc and sparc64
885     if [ -f asm-sparc/$h -a -f asm-sparc64/$h ]; then
886     echo "#ifdef __arch64__
887     #include <asm-sparc64/$h>
888     #else
889     #include <asm-sparc/$h>
890     #endif
891     " >> asm/${h}
892    
893     # sparc only
894     elif [ -f asm-sparc/$h ]; then
895     echo "#ifndef __arch64__
896     #include <asm-sparc/$h>
897     #endif
898     " >> asm/${h}
899    
900     # sparc64 only
901     else
902     echo "#ifdef __arch64__
903     #include <asm-sparc64/$h>
904     #endif
905     " >> asm/${h}
906     fi
907    
908     # common footer
909     echo "#endif /* !__SPARCSTUB__${name}__ */" >> asm/${h}
910     done
911     return 0
912     }
913    
914 johnm 1.89 headers___fix() {
915 plasmaroo 1.88 # Voodoo to partially fix broken upstream headers.
916     # Issues with this function should go to plasmaroo.
917 johnm 1.72 sed -i \
918 plasmaroo 1.124 -e "s/\([ "$'\t'"]\)\(u\|s\)\(8\|16\|32\|64\)\([ "$'\t'"]\)/\1__\2\3\4/g;" \
919 plasmaroo 1.88 -e 's/ \(u\|s\)\(8\|16\|32\|64\)$/ __\1\2/g' \
920     -e 's/\([(, ]\)\(u\|s\)64\([, )]\)/\1__\264\3/g' \
921 plasmaroo 1.124 -e "s/^\(u\|s\)\(8\|16\|32\|64\)\([ "$'\t'"]\)/__\1\2\3/g;" \
922 johnm 1.72 "$@"
923     }
924 johnm 1.28
925 johnm 1.1 # common functions
926     #==============================================================
927 plasmaroo 1.33 kernel-2_src_unpack() {
928 johnm 1.1 universal_unpack
929 lu_zero 1.62
930 dsd 1.126 [[ -n ${UNIPATCH_LIST} || -n ${UNIPATCH_LIST_DEFAULT} || -n ${UNIPATCH_LIST_GENPATCHES} ]] && \
931     unipatch "${UNIPATCH_LIST_DEFAULT} ${UNIPATCH_LIST_GENPATCHES} ${UNIPATCH_LIST}"
932 lu_zero 1.62
933 johnm 1.107 [[ -z ${K_NOSETEXTRAVERSION} ]] && unpack_set_extraversion
934     unpack_fix_docbook
935 dsd 1.104 unpack_fix_install_path
936    
937 johnm 1.56 kernel_is 2 4 && unpack_2_4
938 johnm 1.1 }
939    
940 plasmaroo 1.33 kernel-2_src_compile() {
941 vapier 1.136 cd "${S}"
942 johnm 1.93 [[ ${ETYPE} == headers ]] && compile_headers
943     [[ ${ETYPE} == sources ]] && \
944 vapier 1.145 use doc && compile_manpages
945 johnm 1.1 }
946    
947 plasmaroo 1.33 kernel-2_pkg_preinst() {
948 johnm 1.93 [[ ${ETYPE} == headers ]] && preinst_headers
949 johnm 1.1 }
950    
951 plasmaroo 1.33 kernel-2_src_install() {
952 johnm 1.1 install_universal
953 johnm 1.93 [[ ${ETYPE} == headers ]] && install_headers
954     [[ ${ETYPE} == sources ]] && install_sources
955 johnm 1.1 }
956    
957 plasmaroo 1.33 kernel-2_pkg_postinst() {
958 johnm 1.93 [[ ${ETYPE} == headers ]] && postinst_headers
959     [[ ${ETYPE} == sources ]] && postinst_sources
960 johnm 1.1 }
961 johnm 1.12
962 plasmaroo 1.33 kernel-2_pkg_setup() {
963 johnm 1.93 [[ ${ETYPE} == headers ]] && setup_headers
964     [[ ${ETYPE} == sources ]] && echo ">>> Preparing to unpack ..."
965 johnm 1.12 }

  ViewVC Help
Powered by ViewVC 1.1.20