]> pilppa.org Git - familiar-h63xx-build.git/blob - org.handhelds.familiar/packages/altboot/altboot_1.0.5.bb
OE tree imported from monotone branch org.openembedded.oz354fam083 at revision 8b12e3...
[familiar-h63xx-build.git] / org.handhelds.familiar / packages / altboot / altboot_1.0.5.bb
1 #! /bin/sh
2 #
3 # Copyright Matthias Hentges <devel@hentges.net> (c) 2006
4 # License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
5 #
6 # Filename: altboot_1.0.5-rc2.bb
7 # Date: 21-Feb-06
8
9 DESCRIPTION = "The altboot bootmanager"
10 MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>"
11 HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
12
13 ######################################################################################
14
15 PR = "r0"
16
17 ######################################################################################
18
19 PACKAGE_ARCH = "${MACHINE}"
20
21 TAG = "${@'v' + bb.data.getVar('PV',d,1).replace('.', '-')}"
22
23 SRC_URI = "cvs://anonymous@hentges.net/hentgescvs;method=pserver;tag=${TAG};module=altboot"
24
25 S = "${WORKDIR}/altboot/"
26
27 ######################################################################################
28
29 do_install() {
30         install -d ${D}/sbin
31         install -d ${D}/etc/altboot-menu
32         install -d ${D}/etc/altboot-menu/Advanced
33         install -d ${D}/etc/altboot.rc
34         install -d ${D}/usr/share/doc/altboot
35         
36         if test -d ${WORKDIR}/altboot/${MACHINE}
37         then
38                 install -m 0644 ${WORKDIR}/altboot/${MACHINE}/altboot*.cfg ${D}/etc
39         else
40                 install -m 0644 ${WORKDIR}/altboot/altboot*.cfg ${D}/etc
41         fi
42         
43         install -m 0644 ${WORKDIR}/altboot/altboot.func ${D}/etc
44         install -m 0755 ${WORKDIR}/altboot/init.altboot ${D}/sbin
45         
46         if test -d ${WORKDIR}/altboot/${MACHINE}/altboot-menu/  
47         then
48                 install -m 0755 ${WORKDIR}/altboot/${MACHINE}/altboot-menu/*-* ${D}/etc/altboot-menu
49         else
50                 install -m 0755 ${WORKDIR}/altboot/altboot-menu/*-* ${D}/etc/altboot-menu
51         fi
52
53         if test -d ${WORKDIR}/altboot/${MACHINE}/altboot-menu/Advanced/
54         then
55                 install -m 0755 ${WORKDIR}/altboot/${MACHINE}/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
56         else
57                 install -m 0755 ${WORKDIR}/altboot/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
58         fi
59         
60         install -m 0755 ${WORKDIR}/altboot/altboot.rc/*.sh ${D}/etc/altboot.rc
61         install -m 0644 ${WORKDIR}/altboot/altboot.rc/*.txt ${D}/etc/altboot.rc 
62 }               
63
64 ######################################################################################
65
66 do_configure() {
67         cat ${WORKDIR}/altboot/init.altboot | sed "s/^VERSION=.*/VERSION=\"${PV}\"/" > ${WORKDIR}/altboot/init.altboot_
68         mv ${WORKDIR}/altboot/init.altboot_ ${WORKDIR}/altboot/init.altboot
69 }
70
71 ######################################################################################
72
73 pkg_postinst() {
74         update-alternatives --install /sbin/init init /sbin/init.altboot 55
75 }
76
77 pkg_postinst_spitz() {
78         # Note: Spitz support is a royal pain in the ass.
79         #       Since Spitz pivot_roots by default, there is no real way
80         #       a user can install an altboot.ipk into the flash FS.
81         #       So we need to do that manually (*SIGH*)
82
83     # the 2.6 kernel for spitz boots from HDD, no need to copy to flash
84     if cat /proc/version | awk '{print $3}' | grep -q '^2.6'; then
85         update-alternatives --install /sbin/init init /sbin/init.altboot 55
86     # no need to copy to flash if we're installing to flash already
87     elif mount | grep ' / ' | grep -q mtdblock; then
88         update-alternatives --install /sbin/init init /sbin/init.altboot 55
89     else
90         # /l/m only exists on the HDD on spitz
91         if test -d /lib/modules
92         then
93             if [ -e /media/realroot/sbin/init ]; then
94                 ROOT_MOUNT_POINT="/media/realroot"
95             elif [ -e /media/ROM/sbin/init ]; then
96                 ROOT_MOUNT_POINT="/media/ROM"
97             fi
98             if [ ! "$ROOT_MOUNT_POINT" = "" ]; then
99                 ROOT_MOUNT_DEVICE=`cat /proc/mounts | grep $ROOT_MOUNT_POINT | grep jffs2 | cut -d " " -f 1`
100                 if [ ! "$ROOT_MOUNT_DEVICE" = "" ]; then
101                     mount -oremount,rw $ROOT_MOUNT_DEVICE $ROOT_MOUNT_POINT
102                     cp -R /etc/altboot* $ROOT_MOUNT_POINT/etc
103                     cp /sbin/init.altboot $ROOT_MOUNT_POINT/sbin
104                     if [ -f $ROOT_MOUNT_POINT/sbin/init ]; then
105                         mv $ROOT_MOUNT_POINT/sbin/init $ROOT_MOUNT_POINT/sbin/init.orig
106                     fi
107                     ln -s /sbin/init.altboot $ROOT_MOUNT_POINT/sbin/init
108                 fi
109             fi
110         fi
111     fi
112 }
113
114 ######################################################################################
115
116 pkg_postrm() {
117         update-alternatives --remove init /sbin/init.altboot
118 }
119
120 pkg_postrm_spitz() {
121     # the 2.6 kernel for spitz boots from HDD, no need to remove from flash
122     if cat /proc/version | awk '{print $3}' | grep -q '^2.6'; then
123         update-alternatives --remove init /sbin/init.altboot
124     # no need to copy to flash if we're removing from flash already
125     elif mount | grep ' / ' | grep -q mtdblock; then
126         update-alternatives --remove init /sbin/init.altboot
127     else
128         if test -d /lib/modules
129         then
130             if [ -e /media/realroot/sbin/init ]; then
131                 ROOT_MOUNT_POINT="/media/realroot"
132             elif [ -e /media/ROM/sbin/init ]; then
133                 ROOT_MOUNT_POINT="/media/ROM"
134             fi
135             if [ ! "$ROOT_MOUNT_POINT" = "" ]; then
136                 ROOT_MOUNT_DEVICE=`cat /proc/mounts | grep $ROOT_MOUNT_POINT | grep jffs2 | cut -d " " -f 1`
137                 if [ ! "$ROOT_MOUNT_DEVICE" = "" ]; then
138                     mount -oremount,rw $ROOT_MOUNT_DEVICE $ROOT_MOUNT_POINT
139                     if [ -f $ROOT_MOUNT_POINT/sbin/init.orig ]; then
140                         rm $ROOT_MOUNT_POINT/sbin/init
141                         rm $ROOT_MOUNT_POINT/sbin/init.altboot
142                         mv $ROOT_MOUNT_POINT/sbin/init.orig $ROOT_MOUNT_POINT/sbin/init
143                     else
144                         echo "$ROOT_MOUNT_POINT/sbin/init.orig not found, not uninstalling altboot!"
145                     fi
146                 fi
147             fi
148         fi
149     fi
150 }
151
152
153
154