summaryrefslogtreecommitdiff
path: root/packages/altboot/altboot_0.0.5-rc4.bb
blob: 082f312bfa86f1a16b9c42d6ac7d0435f26d57a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#! /bin/sh
#
# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
#
# Filename: altboot_0.0.5-rc2.bb
# Date: 21-Feb-06

DESCRIPTION = "The altboot bootmanager"
MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>"
HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"

######################################################################################

PR = "r0"

######################################################################################

PACKAGE_ARCH = "${MACHINE}"

TAG = "${@'v' + bb.data.getVar('PV',d,1).replace('.', '-')}"

SRC_URI = "cvs://anonymous@hentges.net/hentgescvs;method=pserver;tag=${TAG};module=altboot"

######################################################################################

do_install() {
	install -d ${D}/sbin
	install -d ${D}/etc/altboot-menu
	install -d ${D}/etc/altboot-menu/Advanced
	install -d ${D}/etc/altboot.rc
	install -d ${D}/usr/share/doc/altboot
	
	if test -d ${WORKDIR}/altboot/${MACHINE}
	then
		install -m 0644 ${WORKDIR}/altboot/${MACHINE}/altboot*.cfg ${D}/etc
	else
		install -m 0644 ${WORKDIR}/altboot/altboot*.cfg ${D}/etc
	fi
	
	install -m 0644 ${WORKDIR}/altboot/altboot.func ${D}/etc
	install -m 0755 ${WORKDIR}/altboot/init.altboot ${D}/sbin
	
	if test -d ${WORKDIR}/altboot/${MACHINE}/altboot-menu/	
	then
		install -m 0755 ${WORKDIR}/altboot/${MACHINE}/altboot-menu/*-* ${D}/etc/altboot-menu
	else
		install -m 0755 ${WORKDIR}/altboot/altboot-menu/*-* ${D}/etc/altboot-menu
	fi

	if test -d ${WORKDIR}/altboot/${MACHINE}/altboot-menu/Advanced/
	then
		install -m 0755 ${WORKDIR}/altboot/${MACHINE}/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
	else
		install -m 0755 ${WORKDIR}/altboot/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
	fi
	
	install -m 0755 ${WORKDIR}/altboot/altboot.rc/*.sh ${D}/etc/altboot.rc
	install -m 0644 ${WORKDIR}/altboot/altboot.rc/*.txt ${D}/etc/altboot.rc	
}		

######################################################################################

do_configure() {
	cat ${WORKDIR}/altboot/init.altboot | sed "s/^VERSION=.*/VERSION=\"${PV}\"/" > ${WORKDIR}/altboot/init.altboot_
	mv ${WORKDIR}/altboot/init.altboot_ ${WORKDIR}/altboot/init.altboot
}

######################################################################################

pkg_postinst() {
	update-alternatives --install /sbin/init init /sbin/init.altboot 55
}

pkg_postinst_spitz() {
	# Note: Spitz support is a royal pain in the ass.
	#       Since Spitz pivot_roots by default, there is no real way
	#	a user can install an altboot.ipk into the flash FS.
	#	So we need to do that manually (*SIGH*)

	# /l/m only exists on the HDD on spitz
	if test -d /lib/modules
	then
	   if [ -e /media/realroot/sbin/init ]; then
	      ROOT_MOUNT_POINT="/media/realroot"
	   elif [ -e /media/ROM/sbin/init ]; then
	      ROOT_MOUNT_POINT="/media/ROM"
	   fi
	   if [ ! "$ROOT_MOUNT_POINT" = "" ]; then
	      ROOT_MOUNT_DEVICE=`cat /proc/mounts | grep $ROOT_MOUNT_POINT | grep jffs2 | cut -d " " -f 1`
	      if [ ! "$ROOT_MOUNT_DEVICE" = "" ]; then
	         mount -oremount,rw $ROOT_MOUNT_DEVICE $ROOT_MOUNT_POINT
	         cp -R /etc/altboot* $ROOT_MOUNT_POINT/etc
	         cp /sbin/init.altboot $ROOT_MOUNT_POINT/sbin
	         if [ -f $ROOT_MOUNT_POINT/sbin/init ]; then
	         	 mv $ROOT_MOUNT_POINT/sbin/init $ROOT_MOUNT_POINT/sbin/init.orig
	         fi
	         ln -s /sbin/init.altboot $ROOT_MOUNT_POINT/sbin/init
	      fi
	   fi
	fi
}

######################################################################################

pkg_postrm() {
	update-alternatives --remove init /sbin/init.altboot
}

pkg_postrm_spitz() {
	if test -d /lib/modules
        then
           if [ -e /media/realroot/sbin/init ]; then
              ROOT_MOUNT_POINT="/media/realroot"
           elif [ -e /media/ROM/sbin/init ]; then
              ROOT_MOUNT_POINT="/media/ROM"
           fi
           if [ ! "$ROOT_MOUNT_POINT" = "" ]; then
              ROOT_MOUNT_DEVICE=`cat /proc/mounts | grep $ROOT_MOUNT_POINT | grep jffs2 | cut -d " " -f 1`
              if [ ! "$ROOT_MOUNT_DEVICE" = "" ]; then
                 mount -oremount,rw $ROOT_MOUNT_DEVICE $ROOT_MOUNT_POINT
	         if [ -f $ROOT_MOUNT_POINT/sbin/init.orig ]; then
	            rm $ROOT_MOUNT_POINT/sbin/init
	            rm $ROOT_MOUNT_POINT/sbin/init.altboot
	            mv $ROOT_MOUNT_POINT/sbin/init.orig $ROOT_MOUNT_POINT/sbin/init
	         else
	   	 echo "$ROOT_MOUNT_POINT/sbin/init.orig not found, not uninstalling altboot!"
	         fi
	      fi
           fi
	fi
}