diff options
author | Richard Purdie <rpurdie@rpsys.net> | 2006-12-31 23:28:56 +0000 |
---|---|---|
committer | Richard Purdie <rpurdie@rpsys.net> | 2006-12-31 23:28:56 +0000 |
commit | a7c7d20784667526ec3fce58da7efe2b415aa884 (patch) | |
tree | 73c22c96396d8f235b49a0da712a9d9d04e377a9 /classes/image.bbclass | |
parent | 9bd213b23e9095cc0aa94952cc345a110a5cdc40 (diff) |
Rename: image_ipk -> image.bbclass, IPKG_INSTALL -> PACKAGE_INSTALL to prepare for deb packaging
Diffstat (limited to 'classes/image.bbclass')
-rw-r--r-- | classes/image.bbclass | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/classes/image.bbclass b/classes/image.bbclass new file mode 100644 index 0000000000..2beb137aef --- /dev/null +++ b/classes/image.bbclass @@ -0,0 +1,99 @@ +inherit rootfs_ipk + +# We need to recursively follow RDEPENDS and RRECOMMENDS for images +BUILD_ALL_DEPS = "1" +do_rootfs[recrdeptask] = "do_package_write" + +# Images are generally built explicitly, do not need to be part of world. +EXCLUDE_FROM_WORLD = "1" + +USE_DEVFS ?= "0" + +DEPENDS += "makedevs-native" +PACKAGE_ARCH = "${MACHINE_ARCH}" + +def get_image_deps(d): + import bb + str = "" + for type in (bb.data.getVar('IMAGE_FSTYPES', d, 1) or "").split(): + deps = bb.data.getVar('IMAGE_DEPENDS_%s' % type, d) or "" + if deps: + str += " %s" % deps + return str + +DEPENDS += "${@get_image_deps(d)}" + +# +# Get a list of files containing device tables to create. +# * IMAGE_DEVICE_TABLE is the old name to an absolute path to a device table file +# * IMAGE_DEVICE_TABLES is a new name for a file, or list of files, seached +# for in the BBPATH +# If neither are specified then the default name of files/device_table-minimal.txt +# is searched for in the BBPATH (same as the old version.) +# +def get_devtable_list(d): + import bb + devtable = bb.data.getVar('IMAGE_DEVICE_TABLE', d, 1) + if devtable != None: + return devtable + str = "" + devtables = bb.data.getVar('IMAGE_DEVICE_TABLES', d, 1) + if devtables == None: + devtables = 'files/device_table-minimal.txt' + for devtable in devtables.split(): + str += " %s" % bb.which(bb.data.getVar('BBPATH', d, 1), devtable) + return str + +IMAGE_POSTPROCESS_COMMAND ?= "" + +# Must call real_do_rootfs() from inside here, rather than as a separate +# task, so that we have a single fakeroot context for the whole process. +fakeroot do_rootfs () { + set -x + rm -rf ${IMAGE_ROOTFS} + + if [ "${USE_DEVFS}" != "1" ]; then + mkdir -p ${IMAGE_ROOTFS}/dev + for devtable in ${@get_devtable_list(d)}; do + makedevs -r ${IMAGE_ROOTFS} -D $devtable + done + fi + + real_do_rootfs + + insert_feed_uris + + rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/lists/oe + + ${IMAGE_PREPROCESS_COMMAND} + + export TOPDIR=${TOPDIR} + + for type in ${IMAGE_FSTYPES}; do + if test -z "$FAKEROOTKEY"; then + fakeroot -i ${TMPDIR}/fakedb.image bbimage -t $type -e ${FILE} + else + bbimage -n "${IMAGE_NAME}" -t "$type" -e "${FILE}" + fi + done + + ${IMAGE_POSTPROCESS_COMMAND} +} + +insert_feed_uris () { + + echo "Building feeds for [${DISTRO}].." + + for line in ${FEED_URIS} + do + # strip leading and trailing spaces/tabs, then split into name and uri + line_clean="`echo "$line"|sed 's/^[ \t]*//;s/[ \t]*$//'`" + feed_name="`echo "$line_clean" | sed -n 's/\(.*\)##\(.*\)/\1/p'`" + feed_uri="`echo "$line_clean" | sed -n 's/\(.*\)##\(.*\)/\2/p'`" + + echo "Added $feed_name feed with URL $feed_uri" + + # insert new feed-sources + echo "src/gz $feed_name $feed_uri" >> ${IMAGE_ROOTFS}/etc/ipkg/${feed_name}-feed.conf + done +} |