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

Diff of /eclass/kernel-2.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

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

Legend:
Removed from v.1.92  
changed lines
  Added in v.1.159

  ViewVC Help
Powered by ViewVC 1.1.20