LICENSE = MIT PR = "r20" 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}${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/ 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") }