Magellan Linux

Contents of /smage/trunk/core/include/kernel26.sminc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 5 - (show annotations) (download)
Sun Jan 11 00:59:57 2009 UTC (15 years, 4 months ago) by niro
File size: 9693 byte(s)
-moved several base packages to 'core'
1 # kernel26 global smage functions
2 # $Header: /alx-cvs/smage-eglibc/include/kernel26.sminc,v 1.3 2008/08/28 10:21:22 niro Exp $
3
4 # needed extra vars:
5 # ${KERNEL_TYPE}: needed, 'sources' or 'image'
6 # ${BRANCH}: needed, style branch of the kernel
7 # ${KERNEL_CONFIG}: optional, needed if you want to override the default
8 # searchpath ${SOURCEDIR}/${PNAME}/config-${PVER}-${BRANCH}-${PBUILD}
9 #
10 # ${PSUBVER}: optional, only needed for 2.6.x.x naming scheme
11 # ${EXTRAVERSION}: optinal, extra version for the kernel name
12 # default setting is ${PSUBVER}-${BRANCH}-${PBUILD}
13
14 # remove me when all distris support this:
15 if [[ ${USE_KERNEL_ARCH_EXTENSION} = true ]]
16 then
17 KERNEL_ARCH_EXTENSION="-${ARCH}"
18 else
19 KERNEL_ARCH_EXTENSION=""
20 fi
21
22 # some sane defaults
23 : ${SRCFILE="linux-${PVER/${PSUBVER}/}.tar.bz2"}
24 : ${SRCDIR="${BUILDDIR}/linux-${PVER}-${BRANCH}-${PBUILD}"}
25
26 : ${SRC_URI=(
27 http://www.kernel.org/pub/linux/kernel/v${PVER:0:3}/${SRCFILE}
28 mirror://kernel26-${BRANCH}/${SRCFILE}
29 mirror://kernel26-${BRANCH}/config-${PVER}-${BRANCH}-${PBUILD}-i686
30 mirror://kernel26-${BRANCH}/config-${PVER}-${BRANCH}-${PBUILD}-x86_64
31 )}
32
33 : ${DEPEND=">= sys-apps/module-init-tools-3.2
34 >= sys-fs/udev-115
35 >= sys-apps/hotplug-20040401
36 >= sys-apps/mkinitrd-5.0.8
37 >= sys-apps/initscripts-0.4.3"}
38
39 : ${PROVIDE="virtual/kernel"}
40
41 EXTRAVERSION="${PSUBVER}-${BRANCH}-${PBUILD}${KERNEL_ARCH_EXTENSION}"
42 KERNEL_CONFIG="${SOURCEDIR}/${PNAME}/config-${PVER}-${BRANCH}-${PBUILD}-${ARCH}"
43
44 # special vars for mage file only
45 KPVER="${PVER}"
46 KPBUILD="${PBUILD}"
47 KBRANCH="${BRANCH}"
48 SPECIAL_VARS="${SPECIAL_VARS} KPVER KPBUILD KBRANCH"
49
50 kernel26_src_prepare()
51 {
52 munpack ${SRCFILE} || die
53 mv ${BUILDDIR}/linux-${PVER/${PSUBVER}/} ${SRCDIR} || die
54
55 # fix permissions
56 chown -R 0:0 ${SRCDIR} || die
57 chmod -R a+r-w+X,u+w ${SRCDIR} || die
58
59 cd ${SRCDIR}
60
61 # fixes INSTALL_PATH to /boot and EXTRAVERSION
62 sed -i -e 's:#export\tINSTALL_PATH:export\tINSTALL_PATH:' \
63 -e "s:^\(EXTRAVERSION =\).*:\1 ${EXTRAVERSION}:" Makefile || die
64 }
65
66 kernel26_src_compile()
67 {
68 cd ${SRCDIR}
69
70 make mrproper || die
71
72 # inject our kernel config
73 cp ${KERNEL_CONFIG} ${SRCDIR}/.config || die
74 make ARCH=${ARCH/i*86/x86} oldconfig || die
75
76 case ${KERNEL_TYPE} in
77 image)
78 mmake ARCH=${ARCH/i*86/x86} || die
79 ;;
80
81 sources)
82 make clean || die
83
84 # needed to compile other programs like iptables
85 make ARCH=${ARCH/i*86/x86} prepare || die
86 # needed to cover >=2.6.14 builds
87 # but deprecated with >=2.6.21, prepare cover all targets there
88 [[ $(echo ${PVER} | sed "s:\.::g") < 2621 ]] && { make ARCH=${ARCH/i*86/x86} prepare-all || die; }
89 make ARCH=${ARCH/i*86/x86} scripts || die
90
91 # at least alsa-drivers needs this one ...
92 touch include/linux/autoconf.h || die
93 ;;
94 esac
95 }
96
97 kernel26_image_src_install()
98 {
99 cd ${SRCDIR}
100
101 # needed directories
102 install -d ${BINDIR}/boot || die
103
104 # install modules
105 make INSTALL_MOD_PATH=${BINDIR} modules_install || die
106
107 # install kernelimage
108 local my_arch="${ARCH}"
109 [[ ${my_arch} = i*86 ]] && my_arch=i386
110 install -m 0644 -o root -g root \
111 arch/${my_arch}/boot/bzImage \
112 ${BINDIR}/boot/kernel-${PVER}-${BRANCH}-${PBUILD}${KERNEL_ARCH_EXTENSION} \
113 || die
114
115 # install System.map
116 install -m 0644 -o root -g root \
117 System.map \
118 ${BINDIR}/boot/System.map-${PVER}-${BRANCH}-${PBUILD}${KERNEL_ARCH_EXTENSION} \
119 || die
120
121 # install kernel description
122 echo "
123 KRNVER=${BRANCH}-${PVER}-${ARCH}-${PBUILD}${KERNEL_ARCH_EXTENSION}
124 KRNLIB=${PVER}-${BRANCH}-${PBUILD}${KERNEL_ARCH_EXTENSION}
125 KRNIMG=kernel-${PVER}-${BRANCH}-${PBUILD}${KERNEL_ARCH_EXTENSION}
126 KRNINITRD=
127 " > ${BINDIR}/boot/kernelversion || die
128
129 # install kernel-config from srcdir
130 install -m 0644 -o root -g root \
131 .config \
132 ${BINDIR}/boot/config-${PVER}-${BRANCH}-${PBUILD}${KERNEL_ARCH_EXTENSION} \
133 || die
134
135 # fix build symlink
136 if [ -L ${BINDIR}/lib/modules/${PVER}-${BRANCH}-${PBUILD}${KERNEL_ARCH_EXTENSION}/build ]
137 then
138 echo "fixing build symlink"
139 rm ${BINDIR}/lib/modules/${PVER}-${BRANCH}-${PBUILD}${KERNEL_ARCH_EXTENSION}/build || die
140 ln -snf /usr/src/linux-${PVER}-${BRANCH}-${PBUILD} \
141 ${BINDIR}/lib/modules/${PVER}-${BRANCH}-${PBUILD}${KERNEL_ARCH_EXTENSION}/build \
142 || die
143 fi
144
145 # and fixing source symlink
146 if [ -L ${BINDIR}/lib/modules/${PVER}-${BRANCH}-${PBUILD}${KERNEL_ARCH_EXTENSION}/source ]
147 then
148 echo "fixing source symlink"
149 rm ${BINDIR}/lib/modules/${PVER}-${BRANCH}-${PBUILD}${KERNEL_ARCH_EXTENSION}/source || die
150 ln -snf /usr/src/linux-${PVER}-${BRANCH}-${PBUILD} \
151 ${BINDIR}/lib/modules/${PVER}-${BRANCH}-${PBUILD}${KERNEL_ARCH_EXTENSION}/source \
152 || die
153 fi
154 }
155
156 kernel26_sources_src_install()
157 {
158 cd ${BUILDDIR}
159
160 echo "Creating linux-${PVER}-${BRANCH}-${PBUILD} sources tarball ... "
161 tar cvjf ${BUILDDIR}/linux-${PVER}-${BRANCH}-${PBUILD}.tar.bz2 $(basename ${SRCDIR}) || die
162
163 echo "Moving linux-${PVER}-${BRANCH}-${PBUILD} tarball to \${BINDIR}/usr/src ... "
164 install -d ${BINDIR}/usr/src || die
165 mv ${BUILDDIR}/linux-${PVER}-${BRANCH}-${PBUILD}.tar.bz2 ${BINDIR}/usr/src || die
166 }
167
168 # installs module-sources path/to/SRCDIR to MODDIR/MODNAME
169 # kernel26_external_modules_install path/to/SRCDIR DESTDIRNAME
170 kernel26_external_modules_install()
171 {
172 cd ${BUILDDIR}
173
174 local modsrc="$1"
175 local moddest="$2"
176 local moddir="${BUILDDIR}/kernel-modules-${PVER}-${BRANCH}-${PBUILD}"
177
178 echo "Installing ${modsrc} to ${moddir}/${moddest} ..."
179 install -d ${moddir} || die
180 mv ${modsrc} ${moddir}/${moddest} || die
181 }
182
183 kernel26_external_modules_tarball()
184 {
185 cd ${BUILDDIR}
186
187 echo "Creating kernel-modules-${PVER}-${BRANCH}-${PBUILD} sources tarball ... "
188 tar cvjf ${BUILDDIR}/kernel-modules-${PVER}-${BRANCH}-${PBUILD}.tar.bz2 \
189 kernel-modules-${PVER}-${BRANCH}-${PBUILD} || die
190
191 echo "Moving kernel-modules-${PVER}-${BRANCH}-${PBUILD} tarball to \${BINDIR}/usr/src ... "
192 install -d ${BINDIR}/usr/src || die
193 mv ${BUILDDIR}/kernel-modules-${PVER}-${BRANCH}-${PBUILD}.tar.bz2 ${BINDIR}/usr/src || die
194 }
195
196 kernel26_src_install()
197 {
198 case ${KERNEL_TYPE} in
199 image)
200 kernel26_image_src_install || die
201 ;;
202
203 sources)
204 kernel26_sources_src_install || die
205 ;;
206 esac
207 }
208
209 kernel_major_version()
210 {
211 local ksrc="$@"
212 local kv
213
214 if [[ -z ${ksrc} ]]
215 then
216 kv="$(uname -r|cut -d. -f1-2)"
217 else
218 local version
219 local patchlevel
220
221 # get version from makefile
222 version=$(grep "^VERSION[[:space:]]*=[[:space:]]*[[:digit:]]" ${ksrc}/Makefile | sed "s/^.*=[[:space:]]*\([[:digit:]]\+\)/\1/g")
223 # get patchlevel from makefile
224 patchlevel=$(grep "^PATCHLEVEL[[:space:]]*=[[:space:]]*[[:digit:]]" ${ksrc}/Makefile | sed "s/^.*=[[:space:]]*\([[:digit:]]\+\)/\1/g")
225 # kernelversion
226 kv="${version}.${patchlevel}"
227 fi
228
229 echo "${kv}"
230 }
231
232 mod_suffix()
233 {
234 local ksrc="$@"
235 local mod_suffix
236
237 if [[ $(kernel_major_version ${ksrc}) = 2.6 ]]
238 then
239 mod_suffix="ko"
240 else
241 mod_suffix="o"
242 fi
243
244 echo ${mod_suffix}
245 }
246
247 kernel26_image_preinstall()
248 {
249 if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
250 then
251 mount /boot &> /dev/null
252 fi
253 }
254
255 kernel26_image_postinstall()
256 {
257 [ ! -d ${MROOT}/sys ] && install -d ${MROOT}/sys
258
259 # fixes a small glitch in <=mage-0.3.6-r15 with symlinks
260 [ -f ${MROOT}/usr/src/linux-${KPVER}-${KBRANCH}-${KPBUILD} ] && \
261 rm ${MROOT}/usr/src/linux-${KPVER}-${KBRANCH}-${KPBUILD}
262
263 [ -x ${MROOT}/sbin/depmod ] &&
264 ${MROOT}/sbin/depmod -ae \
265 -F /boot/System.map-${KPVER}-${KBRANCH}-${KPBUILD} \
266 ${KPVER}-${KBRANCH}-${KPBUILD}
267
268 # do not run this if ${MROOT} is set !
269 if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
270 then
271 new-kernel-pkg -v --mkinitrd --make-default --install ${KPVER}-${KBRANCH}-${KPBUILD}
272 fi
273
274 # symlink actual kernel to /boot/vmlinuz etc...
275 ln -snf kernel-${KPVER}-${KBRANCH}-${KPBUILD} ${MROOT}/boot/vmlinuz
276 ln -snf System.map-${KPVER}-${KBRANCH}-${KPBUILD} ${MROOT}/boot/System.map
277 ln -snf config-${KPVER}-${KBRANCH}-${KPBUILD} ${MROOT}/boot/config
278 [[ -f ${MROOT}/boot/initrd-${KPVER}-${KBRANCH}-${KPBUILD}.img ]] &&
279 ln -snf initrd-${KPVER}-${KBRANCH}-${KPBUILD}.img ${MROOT}/boot/initrd
280 }
281
282 kernel26_sources_postinstall()
283 {
284 if [ ! -d ${MROOT}/usr/src/linux-${KPVER}-${KBRANCH}-${KPBUILD} ]
285 then
286 echo "Unpacking linux-${KPVER}-${KBRANCH}-${KPBUILD} source tarball ... "
287 tar xvjf /usr/src/linux-${KPVER}-${KBRANCH}-${KPBUILD}.tar.bz2 -C /usr/src
288 fi
289
290 if [ ! -d ${MROOT}/usr/src/kernel-modules-${KPVER}-${KBRANCH}-${KPBUILD} ]
291 then
292 echo "Unpacking kernel-modules-${KPVER}-${KBRANCH}-${KPBUILD} source tarball ... "
293 tar xvjf /usr/src/kernel-modules-${KPVER}-${KBRANCH}-${KPBUILD}.tar.bz2 -C /usr/src
294 fi
295
296 # if not exist create linux symlink
297 if [ ! -h ${MROOT}/usr/src/linux ]
298 then
299 echo "Creating linux -> linux-${KPVER}-${KBRANCH}-${KPBUILD} symlink ... "
300 [ ! -d ${MROOT}/usr/src ] && install ${MROOT}/usr/src
301 ln -snf ${MROOT}/usr/src/linux-${KPVER}-${KBRANCH}-${KPBUILD} \
302 ${MROOT}/usr/src/linux || die
303 fi
304
305 # if not exist create kernel-modules symlink
306 if [ ! -h ${MROOT}/usr/src/kernel-modules ]
307 then
308 echo "Creating kernel-modules -> kernel-modules-${KPVER}-${KBRANCH}-${KPBUILD} symlink ... "
309 [ ! -d ${MROOT}/usr/src ] && install ${MROOT}/usr/src
310 ln -snf ${MROOT}/usr/src/kernel-modules-${KPVER}-${KBRANCH}-${KPBUILD} \
311 ${MROOT}/usr/src/kernel-modules || die
312 fi
313 }
314
315 export_inherits kernel26 src_prepare src_compile src_install preinstall postinstall
316
317 # export pre/postinstall functions depending on KERNEL_TYPE
318 case ${KERNEL_TYPE} in
319 image)
320 export_inherits kernel26_image preinstall postinstall
321 SPECIAL_FUNCTIONS="${SPECIAL_FUNCTIONS} kernel26_image_preinstall kernel26_image_postinstall"
322 ;;
323 sources)
324 export_inherits kernel26_sources postinstall
325 SPECIAL_FUNCTIONS="${SPECIAL_FUNCTIONS} kernel26_sources_postinstall"
326 ;;
327 esac