Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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