Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 5 - (hide 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 niro 3 # 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