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

Contents of /eclass/kernel-2.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.148 - (hide annotations) (download)
Fri Oct 7 08:25:04 2005 UTC (13 years, 8 months ago) by johnm
Branch: MAIN
Changes since 1.147: +1 -6 lines
Removing devfsd block. Should keep everyone happy. Any bugs coming in need to be closed WONTFIX and users to use static-dev or udev.

1 vapier 1.75 # Copyright 1999-2005 Gentoo Foundation
2 johnm 1.13 # Distributed under the terms of the GNU General Public License v2
3 johnm 1.148 # $Header: /var/cvsroot/gentoo-x86/eclass/kernel-2.eclass,v 1.147 2005/09/29 21:37:55 johnm Exp $
4 johnm 1.13
5 johnm 1.54 # Description: kernel.eclass rewrite for a clean base regarding the 2.6
6     # series of kernel with back-compatibility for 2.4
7 johnm 1.3 #
8 johnm 1.54 # Maintainer: John Mylchreest <johnm@gentoo.org>
9 johnm 1.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     if [[ ${CTARGET} != ${CHOST} ]]; then
298     xmakeopts="${xmakeopts} CROSS_COMPILE=${CTARGET}-"
299     elif type -p ${CHOST}-ar; then
300     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.130 sed -ie "s#/usr/local/man#${D}/usr/share/man#g" \
517 johnm 1.128 scripts/makeman Documentation/DocBook/Makefile
518 spock 1.39 ebegin "Installing manpages"
519 johnm 1.78 env -u ARCH make installmandocs
520 spock 1.37 eend $?
521 johnm 1.130 sed -ie "s#${D}/usr/share/man#/usr/local/man#g" \
522 johnm 1.128 scripts/makeman Documentation/DocBook/Makefile
523 spock 1.37 }
524    
525 johnm 1.1 # pkg_preinst functions
526     #==============================================================
527     preinst_headers() {
528 vapier 1.60 local ddir=$(kernel_header_destdir)
529 johnm 1.72 [[ -L ${ddir}/linux ]] && rm ${ddir}/linux
530     [[ -L ${ddir}/asm ]] && rm ${ddir}/asm
531 johnm 1.1 }
532    
533     # pkg_postinst functions
534     #==============================================================
535     postinst_sources() {
536 vapier 1.80 local MAKELINK=0
537 swegener 1.135
538 johnm 1.84 # if we have USE=symlink, then force K_SYMLINK=1
539     use symlink && K_SYMLINK=1
540    
541 johnm 1.78 # if we are to forcably symlink, delete it if it already exists first.
542 johnm 1.93 if [[ -n ${K_SYMLINK} ]]; then
543 vapier 1.80 [[ -h ${ROOT}usr/src/linux ]] && rm ${ROOT}usr/src/linux
544 johnm 1.78 MAKELINK=1
545     fi
546 swegener 1.135
547 johnm 1.78 # if the link doesnt exist, lets create it
548 vapier 1.80 [[ ! -h ${ROOT}usr/src/linux ]] && MAKELINK=1
549 swegener 1.135
550 johnm 1.93 if [[ ${MAKELINK} == 1 ]]; then
551 johnm 1.89 cd ${ROOT}usr/src
552     ln -sf linux-${KV_FULL} linux
553     cd ${OLDPWD}
554     fi
555 johnm 1.1
556     # Don't forget to make directory for sysfs
557 johnm 1.111 [[ ! -d ${ROOT}sys ]] && kernel_is 2 6 && mkdir ${ROOT}sys
558 johnm 1.1
559     echo
560     einfo "After installing a new kernel of any version, it is important"
561     einfo "that you have the appropriate /etc/modules.autoload.d/kernel-X.Y"
562     einfo "created (X.Y is the first 2 parts of your new kernel version)"
563     echo
564     einfo "For example, this kernel will require:"
565     einfo "/etc/modules.autoload.d/kernel-${KV_MAJOR}.${KV_MINOR}"
566     echo
567 r3pek 1.113 einfo "If you are upgrading from a previous kernel, you may be interested"
568     einfo "in the following documents:"
569     einfo " - General upgrade guide: http://www.gentoo.org/doc/en/kernel-upgrade.xml"
570     kernel_is_2_6 && einfo " - 2.4 to 2.6 migration guide: http://www.gentoo.org/doc/en/migration-to-2.6.xml"
571 johnm 1.138 if kernel_is ge 2 6 13; then
572     ewarn "As of 2.6.13 the support for devfs has been removed."
573     ewarn "You will be required to either manage a static /dev"
574     ewarn "or to ensure that udev is starting on boot."
575     fi
576 r3pek 1.113 echo
577 lu_zero 1.62
578 johnm 1.2 # if K_EXTRAEINFO is set then lets display it now
579 hollow 1.95 if [[ -n ${K_EXTRAEINFO} ]]; then
580 johnm 1.2 echo ${K_EXTRAEINFO} | fmt |
581 hollow 1.95 while read -s ELINE; do einfo "${ELINE}"; done
582 plasmaroo 1.33 fi
583    
584 iggy 1.7 # if K_EXTRAEWARN is set then lets display it now
585 hollow 1.95 if [[ -n ${K_EXTRAEWARN} ]]; then
586 iggy 1.7 echo ${K_EXTRAEWARN} | fmt |
587 hollow 1.95 while read -s ELINE; do ewarn "${ELINE}"; done
588 iggy 1.7 fi
589 johnm 1.1 }
590    
591 johnm 1.12 postinst_headers() {
592 johnm 1.72 einfo "Kernel headers are usually only used when recompiling glibc, as such, following the installation"
593     einfo "of newer headers, it is advised that you re-merge glibc as follows:"
594     einfo "emerge glibc"
595     einfo "Failure to do so will cause glibc to not make use of newer features present in the updated kernel"
596     einfo "headers."
597 johnm 1.12 }
598    
599     # pkg_setup functions
600     #==============================================================
601     setup_headers() {
602 vapier 1.86 [[ -z ${H_SUPPORTEDARCH} ]] && H_SUPPORTEDARCH=${PN/-*/}
603 hollow 1.95 for i in ${H_SUPPORTEDARCH}; do
604 vapier 1.87 [[ $(tc-arch) == "${i}" ]] && H_ACCEPT_ARCH="yes"
605 johnm 1.12 done
606 lu_zero 1.62
607 johnm 1.93 if [[ ${H_ACCEPT_ARCH} != "yes" ]]; then
608 johnm 1.12 echo
609 vapier 1.106 eerror "This version of ${PN} does not support $(tc-arch)."
610 johnm 1.12 eerror "Please merge the appropriate sources, in most cases"
611 vapier 1.106 eerror "(but not all) this will be called $(tc-arch)-headers."
612     die "Package unsupported for $(tc-arch)"
613 johnm 1.12 fi
614     }
615    
616 johnm 1.1 # unipatch
617     #==============================================================
618     unipatch() {
619 johnm 1.108 local i x y z extention PIPE_CMD UNIPATCH_DROP KPATCH_DIR PATCH_DEPTH ELINE
620 johnm 1.122 local STRICT_COUNT PATCH_LEVEL myLC_ALL myLANG
621 swegener 1.135
622 johnm 1.78 # set to a standard locale to ensure sorts are ordered properly.
623     myLC_ALL="${LC_ALL}"
624 johnm 1.122 myLANG="${LANG}"
625 johnm 1.78 LC_ALL="C"
626 johnm 1.122 LANG=""
627 johnm 1.1
628     [ -z "${KPATCH_DIR}" ] && KPATCH_DIR="${WORKDIR}/patches/"
629     [ ! -d ${KPATCH_DIR} ] && mkdir -p ${KPATCH_DIR}
630    
631 johnm 1.41 # We're gonna need it when doing patches with a predefined patchlevel
632     shopt -s extglob
633    
634 johnm 1.54 # This function will unpack all passed tarballs, add any passed patches, and remove any passed patchnumbers
635 johnm 1.1 # usage can be either via an env var or by params
636 johnm 1.54 # although due to the nature we pass this within this eclass
637     # it shall be by param only.
638     # -z "${UNIPATCH_LIST}" ] && UNIPATCH_LIST="${@}"
639     UNIPATCH_LIST="${@}"
640 johnm 1.1
641     #unpack any passed tarballs
642 hollow 1.95 for i in ${UNIPATCH_LIST}; do
643     if [ -n "$(echo ${i} | grep -e "\.tar" -e "\.tbz" -e "\.tgz")" ]; then
644 johnm 1.1 extention=${i/*./}
645 johnm 1.41 extention=${extention/:*/}
646 johnm 1.1 case ${extention} in
647     tbz2) PIPE_CMD="tar -xvjf";;
648     bz2) PIPE_CMD="tar -xvjf";;
649     tgz) PIPE_CMD="tar -xvzf";;
650     gz) PIPE_CMD="tar -xvzf";;
651     *) eerror "Unrecognized tarball compression"
652     die "Unrecognized tarball compression";;
653     esac
654    
655 hollow 1.95 if [ -n "${UNIPATCH_STRICTORDER}" ]; then
656 johnm 1.110 unset z
657 johnm 1.121 STRICT_COUNT=$((10#${STRICT_COUNT} + 1))
658 johnm 1.108 for((y=0; y<$((6 - ${#STRICT_COUNT})); y++));
659     do z="${z}0";
660     done
661 r3pek 1.112 PATCH_ORDER="${z}${STRICT_COUNT}"
662 johnm 1.108
663 r3pek 1.112 mkdir -p ${KPATCH_DIR}/${PATCH_ORDER}/
664     ${PIPE_CMD} ${i/:*/} -C ${KPATCH_DIR}/${PATCH_ORDER}/ 1>/dev/null
665 johnm 1.16 else
666 johnm 1.41 ${PIPE_CMD} ${i/:*/} -C ${KPATCH_DIR} 1>/dev/null
667 johnm 1.16 fi
668    
669 hollow 1.95 if [ $? == 0 ]; then
670 johnm 1.1 einfo "${i/*\//} unpacked"
671 johnm 1.54 [ -n "$(echo ${i} | grep ':')" ] && echo ">>> Strict patch levels not currently supported for tarballed patchsets"
672 johnm 1.1 else
673 johnm 1.41 eerror "Failed to unpack ${i/:*/}"
674 johnm 1.1 die "unable to unpack patch tarball"
675     fi
676 johnm 1.16 else
677 johnm 1.25 extention=${i/*./}
678 johnm 1.41 extention=${extention/:*/}
679 johnm 1.25 PIPE_CMD=""
680     case ${extention} in
681     bz2) PIPE_CMD="bzip2 -dc";;
682     patch) PIPE_CMD="cat";;
683     diff) PIPE_CMD="cat";;
684     gz|Z|z) PIPE_CMD="gzip -dc";;
685     ZIP|zip) PIPE_CMD="unzip -p";;
686 johnm 1.41 *) UNIPATCH_DROP="${UNIPATCH_DROP} ${i/:*/}";;
687 johnm 1.25 esac
688 johnm 1.41
689     PATCH_LEVEL=${i/*([^:])?(:)}
690     i=${i/:*/}
691 johnm 1.25 x=${i/*\//}
692     x=${x/\.${extention}/}
693 lu_zero 1.62
694 hollow 1.95 if [ -n "${PIPE_CMD}" ]; then
695     if [ ! -r "${i}" ]; then
696 johnm 1.29 echo
697     eerror "FATAL: unable to locate:"
698     eerror "${i}"
699 johnm 1.54 eerror "for read-only. The file either has incorrect permissions"
700     eerror "or does not exist."
701 johnm 1.29 die Unable to locate ${i}
702     fi
703 lu_zero 1.62
704 hollow 1.95 if [ -n "${UNIPATCH_STRICTORDER}" ]; then
705 johnm 1.110 unset z
706 johnm 1.121 STRICT_COUNT=$((10#${STRICT_COUNT} + 1))
707 johnm 1.108 for((y=0; y<$((6 - ${#STRICT_COUNT})); y++));
708     do z="${z}0";
709     done
710 r3pek 1.112 PATCH_ORDER="${z}${STRICT_COUNT}"
711 johnm 1.108
712 r3pek 1.112 mkdir -p ${KPATCH_DIR}/${PATCH_ORDER}/
713     $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${PATCH_ORDER}/${x}.patch${PATCH_LEVEL})
714 johnm 1.29 else
715 johnm 1.41 $(${PIPE_CMD} ${i} > ${KPATCH_DIR}/${x}.patch${PATCH_LEVEL})
716 johnm 1.29 fi
717 johnm 1.25 fi
718 johnm 1.16 fi
719 johnm 1.1 done
720    
721     #populate KPATCH_DIRS so we know where to look to remove the excludes
722     x=${KPATCH_DIR}
723     KPATCH_DIR=""
724 hollow 1.95 for i in $(find ${x} -type d | sort -n); do
725 johnm 1.1 KPATCH_DIR="${KPATCH_DIR} ${i}"
726     done
727    
728     #so now lets get rid of the patchno's we want to exclude
729 johnm 1.19 UNIPATCH_DROP="${UNIPATCH_EXCLUDE} ${UNIPATCH_DROP}"
730 hollow 1.95 for i in ${UNIPATCH_DROP}; do
731 johnm 1.55 ebegin "Excluding Patch #${i}"
732 hollow 1.95 for x in ${KPATCH_DIR}; do rm -f ${x}/${i}* 2>/dev/null; done
733 johnm 1.55 eend $?
734 johnm 1.1 done
735    
736     # and now, finally, we patch it :)
737 hollow 1.95 for x in ${KPATCH_DIR}; do
738     for i in $(find ${x} -maxdepth 1 -iname "*.patch*" -or -iname "*.diff*" | sort -n); do
739 johnm 1.25 STDERR_T="${T}/${i/*\//}"
740 johnm 1.41 STDERR_T="${STDERR_T/.patch*/.err}"
741    
742 lu_zero 1.62 [ -z ${i/*.patch*/} ] && PATCH_DEPTH=${i/*.patch/}
743 r3pek 1.112 #[ -z ${i/*.diff*/} ] && PATCH_DEPTH=${i/*.diff/}
744 johnm 1.41
745 hollow 1.96 if [ -z "${PATCH_DEPTH}" ]; then PATCH_DEPTH=0; fi
746 johnm 1.41
747     ebegin "Applying ${i/*\//} (-p${PATCH_DEPTH}+)"
748 hollow 1.95 while [ ${PATCH_DEPTH} -lt 5 ]; do
749 plasmaroo 1.33 echo "Attempting Dry-run:" >> ${STDERR_T}
750 johnm 1.25 echo "cmd: patch -p${PATCH_DEPTH} --dry-run -f < ${i}" >> ${STDERR_T}
751 johnm 1.54 echo "=======================================================" >> ${STDERR_T}
752 hollow 1.95 if [ $(patch -p${PATCH_DEPTH} --dry-run -f < ${i} >> ${STDERR_T}) $? -eq 0 ]; then
753 johnm 1.25 echo "Attempting patch:" > ${STDERR_T}
754     echo "cmd: patch -p${PATCH_DEPTH} -f < ${i}" >> ${STDERR_T}
755 johnm 1.54 echo "=======================================================" >> ${STDERR_T}
756 hollow 1.95 if [ $(patch -p${PATCH_DEPTH} -f < ${i} >> ${STDERR_T}) "$?" -eq 0 ]; then
757 johnm 1.1 eend 0
758 johnm 1.25 rm ${STDERR_T}
759 johnm 1.1 break
760     else
761     eend 1
762     eerror "Failed to apply patch ${i/*\//}"
763 johnm 1.54 eerror "Please attach ${STDERR_T} to any bug you may post."
764 johnm 1.1 die "Failed to apply ${i/*\//}"
765     fi
766     else
767     PATCH_DEPTH=$((${PATCH_DEPTH} + 1))
768     fi
769     done
770 hollow 1.95 if [ ${PATCH_DEPTH} -eq 5 ]; then
771 johnm 1.1 eend 1
772 johnm 1.54 eerror "Please attach ${STDERR_T} to any bug you may post."
773 johnm 1.1 die "Unable to dry-run patch."
774     fi
775     done
776     done
777 johnm 1.43
778 johnm 1.144 # This is a quick, and kind of nasty hack to deal with UNIPATCH_DOCS which
779     # sit in KPATCH_DIR's. This is handled properly in the unipatch rewrite,
780     # which is why I'm not taking too much time over this.
781     local tmp
782     for i in ${UNIPATCH_DOCS}; do
783     tmp="${tmp} ${i//*\/}"
784     cp -f ${i} ${T}/
785     done
786     UNIPATCH_DOCS="${tmp}"
787 swegener 1.146
788 johnm 1.43 # clean up KPATCH_DIR's - fixes bug #53610
789 hollow 1.95 for x in ${KPATCH_DIR}; do rm -Rf ${x}; done
790 swegener 1.135
791 johnm 1.78 LC_ALL="${myLC_ALL}"
792 johnm 1.122 LANG="${myLANG}"
793 johnm 1.1 }
794    
795 johnm 1.74 # getfilevar accepts 2 vars as follows:
796     # getfilevar <VARIABLE> <CONFIGFILE>
797     # pulled from linux-info
798    
799     getfilevar() {
800 johnm 1.93 local workingdir basefname basedname xarch=$(tc-arch-kernel)
801 johnm 1.74
802 johnm 1.93 if [[ -z ${1} ]] && [[ ! -f ${2} ]]; then
803 johnm 1.74 echo -e "\n"
804     eerror "getfilevar requires 2 variables, with the second a valid file."
805     eerror " getfilevar <VARIABLE> <CONFIGFILE>"
806     else
807     workingdir=${PWD}
808     basefname=$(basename ${2})
809     basedname=$(dirname ${2})
810     unset ARCH
811 swegener 1.135
812 johnm 1.74 cd ${basedname}
813     echo -e "include ${basefname}\ne:\n\t@echo \$(${1})" | \
814 johnm 1.119 make ${BUILD_FIXES} -s -f - e 2>/dev/null
815 johnm 1.74 cd ${workingdir}
816 swegener 1.135
817 johnm 1.74 ARCH=${xarch}
818     fi
819     }
820    
821 johnm 1.28 detect_arch() {
822     # This function sets ARCH_URI and ARCH_PATCH
823     # with the neccessary info for the arch sepecific compatibility
824     # patchsets.
825 lu_zero 1.62
826 johnm 1.93 local ALL_ARCH LOOP_ARCH COMPAT_URI i
827 plasmaroo 1.33
828     # COMPAT_URI is the contents of ${ARCH}_URI
829     # ARCH_URI is the URI for all the ${ARCH}_URI patches
830     # ARCH_PATCH is ARCH_URI broken into files for UNIPATCH
831    
832     ARCH_URI=""
833     ARCH_PATCH=""
834 vapier 1.145 ALL_ARCH="ALPHA AMD64 ARM HPPA IA64 M68K MIPS PPC PPC64 S390 SH SPARC X86"
835 johnm 1.31
836 hollow 1.95 for LOOP_ARCH in ${ALL_ARCH}; do
837 johnm 1.31 COMPAT_URI="${LOOP_ARCH}_URI"
838     COMPAT_URI="${!COMPAT_URI}"
839 lu_zero 1.62
840 vapier 1.86 [[ -n ${COMPAT_URI} ]] && \
841 johnm 1.55 ARCH_URI="${ARCH_URI} $(echo ${LOOP_ARCH} | tr '[:upper:]' '[:lower:]')? ( ${COMPAT_URI} )"
842 lu_zero 1.62
843 johnm 1.93 if [[ ${LOOP_ARCH} == "$(echo $(tc-arch-kernel) | tr '[:lower:]' '[:upper:]')" ]]; then
844     for i in ${COMPAT_URI}; do
845 plasmaroo 1.33 ARCH_PATCH="${ARCH_PATCH} ${DISTDIR}/${i/*\//}"
846     done
847     fi
848 johnm 1.31 done
849 johnm 1.28 }
850    
851 johnm 1.72 # sparc nastiness
852     #==============================================================
853     # This script generates the files in /usr/include/asm for sparc systems
854     # during installation of sys-kernel/linux-headers.
855     # Will no longer be needed when full 64 bit support is used on sparc64
856     # systems.
857     #
858     # Shamefully ripped from Debian
859     # ----------------------------------------------------------------------
860    
861     # Idea borrowed from RedHat's kernel package
862    
863 eradicator 1.76 # This is gonna get replaced by something in multilib.eclass soon...
864     # --eradicator
865 johnm 1.72 generate_sparc_asm() {
866     local name
867    
868     cd $1 || die
869     mkdir asm
870    
871     for h in `( ls asm-sparc; ls asm-sparc64 ) | grep '\.h$' | sort -u`; do
872     name="$(echo $h | tr a-z. A-Z_)"
873     # common header
874     echo "/* All asm/ files are generated and point to the corresponding
875     * file in asm-sparc or asm-sparc64.
876     */
877    
878     #ifndef __SPARCSTUB__${name}__
879     #define __SPARCSTUB__${name}__
880     " > asm/${h}
881    
882     # common for sparc and sparc64
883     if [ -f asm-sparc/$h -a -f asm-sparc64/$h ]; then
884     echo "#ifdef __arch64__
885     #include <asm-sparc64/$h>
886     #else
887     #include <asm-sparc/$h>
888     #endif
889     " >> asm/${h}
890    
891     # sparc only
892     elif [ -f asm-sparc/$h ]; then
893     echo "#ifndef __arch64__
894     #include <asm-sparc/$h>
895     #endif
896     " >> asm/${h}
897    
898     # sparc64 only
899     else
900     echo "#ifdef __arch64__
901     #include <asm-sparc64/$h>
902     #endif
903     " >> asm/${h}
904     fi
905    
906     # common footer
907     echo "#endif /* !__SPARCSTUB__${name}__ */" >> asm/${h}
908     done
909     return 0
910     }
911    
912 johnm 1.89 headers___fix() {
913 plasmaroo 1.88 # Voodoo to partially fix broken upstream headers.
914     # Issues with this function should go to plasmaroo.
915 johnm 1.72 sed -i \
916 plasmaroo 1.124 -e "s/\([ "$'\t'"]\)\(u\|s\)\(8\|16\|32\|64\)\([ "$'\t'"]\)/\1__\2\3\4/g;" \
917 plasmaroo 1.88 -e 's/ \(u\|s\)\(8\|16\|32\|64\)$/ __\1\2/g' \
918     -e 's/\([(, ]\)\(u\|s\)64\([, )]\)/\1__\264\3/g' \
919 plasmaroo 1.124 -e "s/^\(u\|s\)\(8\|16\|32\|64\)\([ "$'\t'"]\)/__\1\2\3/g;" \
920 johnm 1.72 "$@"
921     }
922 johnm 1.28
923 johnm 1.1 # common functions
924     #==============================================================
925 plasmaroo 1.33 kernel-2_src_unpack() {
926 johnm 1.1 universal_unpack
927 lu_zero 1.62
928 dsd 1.126 [[ -n ${UNIPATCH_LIST} || -n ${UNIPATCH_LIST_DEFAULT} || -n ${UNIPATCH_LIST_GENPATCHES} ]] && \
929     unipatch "${UNIPATCH_LIST_DEFAULT} ${UNIPATCH_LIST_GENPATCHES} ${UNIPATCH_LIST}"
930 lu_zero 1.62
931 johnm 1.107 [[ -z ${K_NOSETEXTRAVERSION} ]] && unpack_set_extraversion
932     unpack_fix_docbook
933 dsd 1.104 unpack_fix_install_path
934    
935 johnm 1.56 kernel_is 2 4 && unpack_2_4
936 johnm 1.1 }
937    
938 plasmaroo 1.33 kernel-2_src_compile() {
939 vapier 1.136 cd "${S}"
940 johnm 1.93 [[ ${ETYPE} == headers ]] && compile_headers
941     [[ ${ETYPE} == sources ]] && \
942 vapier 1.145 use doc && compile_manpages
943 johnm 1.1 }
944    
945 plasmaroo 1.33 kernel-2_pkg_preinst() {
946 johnm 1.93 [[ ${ETYPE} == headers ]] && preinst_headers
947 johnm 1.1 }
948    
949 plasmaroo 1.33 kernel-2_src_install() {
950 johnm 1.1 install_universal
951 johnm 1.93 [[ ${ETYPE} == headers ]] && install_headers
952     [[ ${ETYPE} == sources ]] && install_sources
953 johnm 1.1 }
954    
955 plasmaroo 1.33 kernel-2_pkg_postinst() {
956 johnm 1.93 [[ ${ETYPE} == headers ]] && postinst_headers
957     [[ ${ETYPE} == sources ]] && postinst_sources
958 johnm 1.1 }
959 johnm 1.12
960 plasmaroo 1.33 kernel-2_pkg_setup() {
961 johnm 1.93 [[ ${ETYPE} == headers ]] && setup_headers
962     [[ ${ETYPE} == sources ]] && echo ">>> Preparing to unpack ..."
963 johnm 1.12 }

  ViewVC Help
Powered by ViewVC 1.1.20