summaryrefslogtreecommitdiff
path: root/packages/images/unslung-image.bb
blob: 897fb131c1317854b8ead8cc1d8891d84fe6a595 (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
LICENSE = "MIT"
PR = "r25"
COMPATIBLE_MACHINE = "nslu2"

IMAGE_BASENAME = "unslung"
IMAGE_NAME = "${IMAGE_BASENAME}-${MACHINE}-${DISTRO_VERSION}"

IMAGE_LINGUAS = ""
USE_DEVFS = "1"

DEPENDS  = "virtual/kernel \
	${UNSLUNG_EXTRA_DEPENDS}"

RDEPENDS  = "kernel update-modules unslung-rootfs \
	libc6-unslung slingbox ipkg \
	libipkg \
#	cpio \
#	findutils \
	${UNSLUNG_EXTRA_RDEPENDS}"

PACKAGE_INSTALL = "kernel update-modules unslung-rootfs \
	libc6-unslung slingbox ipkg \
	libipkg \
#	cpio \
#	findutils \
	kernel-module-netconsole \
	${UNSLUNG_EXTRA_INSTALL}"

IMAGE_PREPROCESS_COMMAND += "unslung_clean_image; "

inherit image

# Note that anything in this function must be repeatable without having to rebuild the rootfs
unslung_clean_image () {

	# Remove the patches
	rm -rf ${IMAGE_ROOTFS}/patches

	# Remove the kernel image
	rm -rf ${IMAGE_ROOTFS}/boot
	rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/alternatives/zImage
	# And remove the post and pre scripts for the kernel; saves flash space
	rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/info/kernel.postinst
	rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/info/kernel.postrm

	# Remove all the postinst scripts; don't need them.  But keep the
	# postrm scripts just in case we need to remove something.
	rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/info/*.postinst

	# Remove info from the local feed used to build the image
	rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/lists/*
	rm -f ${IMAGE_ROOTFS}/${sysconfdir}/version

	# Tidy up some thing which are in the wrong place
	mv ${IMAGE_ROOTFS}${libdir}/libipkg* ${IMAGE_ROOTFS}/lib/

	# Remove the ipkg symlink - unsling puts it back in
	rm -f ${IMAGE_ROOTFS}${bindir}/ipkg
	# and make the ipkg symlink point to the ipkg-fl utility instead.
	ln -s ipkg-fl ${IMAGE_ROOTFS}${bindir}/ipkg

	# Hack out the modutils stuff - it's too hard to make it work
	rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/info/update-modules.postinst
	rm -rf ${IMAGE_ROOTFS}/etc/rcS.d
	echo "#!/bin/sh" > ${IMAGE_ROOTFS}/usr/sbin/update-modules
	echo "exit 0" >> ${IMAGE_ROOTFS}/usr/sbin/update-modules
	chmod ugo+x ${IMAGE_ROOTFS}/usr/sbin/update-modules
	echo "#!/bin/sh" > ${IMAGE_ROOTFS}/sbin/depmod
	echo "exit 0" >> ${IMAGE_ROOTFS}/sbin/depmod
	chmod ugo+x ${IMAGE_ROOTFS}/sbin/depmod

	# Don't need this empty directory hanging around
	rm -rf ${IMAGE_ROOTFS}/lib/modules/2.4.22-xfs/pcmcia

	# Strip symbols and fix permissions on the libgcc_s.so.1 library
	${STRIP} ${IMAGE_ROOTFS}/lib/libgcc_s.so.1
	chmod ugo+x ${IMAGE_ROOTFS}/lib/libgcc_s.so.1

# MJW - experimental right now, but no longer need cpio and find
	# We need cpio and find, but we don't need any of the other stuff in
	# the packages (users can install the full package with ipkg after
	# unsling).  Remove the extra files and executables, and clean up
	# the entries from the ipkg database manually.

	#-- these are for cpio:
#	rm -f ${IMAGE_ROOTFS}/usr/bin/mt
#	rm -rf ${IMAGE_ROOTFS}/usr/libexec
#	rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/info/cpio.*
#	rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/alternatives/rmt
#	sed -i -e '/^Package: cpio/,/^$/d' ${IMAGE_ROOTFS}${libdir}/ipkg/status

	#-- and these for find:
#	rm -f ${IMAGE_ROOTFS}/usr/bin/locate
#	rm -f ${IMAGE_ROOTFS}/usr/bin/updatedb
#	rm -f ${IMAGE_ROOTFS}/usr/bin/xargs
#	rm -f ${IMAGE_ROOTFS}/usr/bin/xargs.findutils
#	rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/info/findutils.*
#	sed -i -e '/^Package: findutils/,/^$/d' ${IMAGE_ROOTFS}${libdir}/ipkg/status

	# FIXME: change made 24 Jul 2006 by the OE folks changes the "strip"
	# behavior to create an extra file named .debug/<filename> containing
	# the stripped symbols.  These files are supposed to be packaged
	# separately by the standard bb routines, but for some reason this
	# does not alway occur.  This extremely ugly step is to remove the
	# debug cruft from the rootfs if any are left in the obvious locations.
	# Once someone figures out why and what the right way is to fix this,
	# this code should be removed.

	rm -rf ${IMAGE_ROOTFS}/bin/.debug
	rm -rf ${IMAGE_ROOTFS}/sbin/.debug
	rm -rf ${IMAGE_ROOTFS}/lib/.debug
	rm -rf ${IMAGE_ROOTFS}/usr/bin/.debug
	rm -rf ${IMAGE_ROOTFS}/usr/sbin/.debug
	rm -rf ${IMAGE_ROOTFS}/usr/lib/.debug

# MJW - Experimental - just to make space; remove before releasing!
#	#### Hack to make space for testing!  REMOVE THIS!
#	rm -rf ${IMAGE_ROOTFS}/etc/samba/codepages/unicode_map.850
#	rm -rf ${IMAGE_ROOTFS}/bin/ftp
#	#### End of Hack!

}

nslu2_pack_image () {
	install -d ${DEPLOY_DIR_IMAGE}/slug
	install -m 0644 ${STAGING_LIBDIR}/nslu2-binaries/RedBoot \
			${STAGING_LIBDIR}/nslu2-binaries/Trailer \
			${STAGING_LIBDIR}/nslu2-binaries/SysConf \
			${DEPLOY_DIR_IMAGE}/slug/
	install -m 0644 ${DEPLOY_DIR_IMAGE}/zImage-${IMAGE_BASENAME} ${DEPLOY_DIR_IMAGE}/slug/vmlinuz
	install -m 0644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 ${DEPLOY_DIR_IMAGE}/slug/flashdisk.jffs2
	cd ${DEPLOY_DIR_IMAGE}/slug
	slugimage -p -b RedBoot -s SysConf -r Ramdisk:1,Flashdisk:flashdisk.jffs2 -t Trailer \
	  -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.flashdisk.img
	rm -rf ${DEPLOY_DIR_IMAGE}/slug
}

EXTRA_IMAGEDEPENDS += 'slugimage-native nslu2-linksys-firmware'
IMAGE_POSTPROCESS_COMMAND += "nslu2_pack_image; "