blob: 629c8550142f24b3bdd2ffaf318283dccbee72c8 (
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
|
LICENSE = MIT
PR = "r21"
IMAGE_BASENAME = "unslung"
IMAGE_LINGUAS = ""
USE_DEVFS = "1"
DEPENDS = "virtual/kernel \
${UNSLUNG_EXTRA_DEPENDS}"
RDEPENDS = "kernel update-modules unslung-rootfs \
libc6-unslung slingbox ipkg \
cpio \
findutils \
${UNSLUNG_EXTRA_RDEPENDS}"
IPKG_INSTALL = "kernel update-modules unslung-rootfs \
libc6-unslung slingbox ipkg \
cpio \
findutils \
kernel-module-netconsole \
${UNSLUNG_EXTRA_INSTALL}"
IMAGE_PREPROCESS_COMMAND += "unslung_clean_image; "
inherit image_ipk
# 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
# 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
}
python () {
# Don't build unslung images unless we're targeting an nslu2
mach = bb.data.getVar("MACHINE", d, 1)
if mach != 'nslu2':
raise bb.parse.SkipPackage("Unslung only builds for the Linksys NSLU2")
}
|