summaryrefslogtreecommitdiff
path: root/packages/altboot/altboot_1.0.5.bb
blob: 15850e5bdca64bf105030909477a665e1bce907a (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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#! /bin/sh
#
# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
# License: MIT (see COPYING.MIT)
#
# Filename: altboot_1.0.5-rc2.bb
# Date: 21-Feb-06

DESCRIPTION = "The altboot bootmanager"
HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
LICENSE = "GPL"

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

PR = "r0"

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

PACKAGE_ARCH = "${MACHINE}"

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

SRC_URI = "svn://hentges.net/altboot/tags/;module=${TAG};proto=svn"

S = "${WORKDIR}/${TAG}/"

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

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 ${S}/${MACHINE}/altboot*.cfg ${D}/etc
	else
		install -m 0644 ${S}/altboot*.cfg ${D}/etc
	fi

	install -m 0644 ${S}/altboot.func ${D}/etc
	install -m 0755 ${S}/init.altboot ${D}/sbin

	if test -d ${S}/${MACHINE}/altboot-menu/
	then
		install -m 0755 ${S}/${MACHINE}/altboot-menu/*-* ${D}/etc/altboot-menu
	else
		install -m 0755 ${S}/altboot-menu/*-* ${D}/etc/altboot-menu
	fi

	if test -d ${S}/${MACHINE}/altboot-menu/Advanced/
	then
		install -m 0755 ${S}/${MACHINE}/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
	else
		install -m 0755 ${S}/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
	fi

	install -m 0755 ${S}/altboot.rc/*.sh ${D}/etc/altboot.rc
	install -m 0644 ${S}/altboot.rc/*.txt ${D}/etc/altboot.rc
}

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

do_configure() {
	cat ${S}/init.altboot | sed "s/^VERSION=.*/VERSION=\"${PV}\"/" > ${S}/init.altboot_
	mv ${S}/init.altboot_ ${S}/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*)

    # the 2.6 kernel for spitz boots from HDD, no need to copy to flash
    if cat /proc/version | awk '{print $3}' | grep -q '^2.6'; then
        update-alternatives --install /sbin/init init /sbin/init.altboot 55
    # no need to copy to flash if we're installing to flash already
    elif mount | grep ' / ' | grep -q mtdblock; then
        update-alternatives --install /sbin/init init /sbin/init.altboot 55
    else
        # /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
    fi
}

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

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

pkg_postrm_spitz() {
    # the 2.6 kernel for spitz boots from HDD, no need to remove from flash
    if cat /proc/version | awk '{print $3}' | grep -q '^2.6'; then
        update-alternatives --remove init /sbin/init.altboot
    # no need to copy to flash if we're removing from flash already
    elif mount | grep ' / ' | grep -q mtdblock; then
        update-alternatives --remove init /sbin/init.altboot
    else
        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
    fi
}