# This image is intended to provide a basic configuration that allows
# you to access a newly flashed device over the network or via the
# native console, and use ipkg to install (from feeds accessible via
# the network) any further features you require into internal flash
# memory or onto attached storage.

# It should be as small as possible, while still achieving that goal.

# The rationale for naming it 'base-image' is that this image is the
# base upon which you can install any other functionality you desire.

# See the end of this file for further rationale and policy regarding
# the contents of this image, and the criteria which are used to make
# decisions about adding and removing packages from this image.

# Although it is only fully tested with the Angstrom distro, this
# image is intended to be distro-agnostic.

IMAGE_PREPROCESS_COMMAND = "create_etc_timestamp"

DISTRO_SSH_DAEMON ?= "dropbear"

DISTRO_PACKAGE_MANAGER ?= "ipkg ipkg-collateral"

# FIXME: We need a distro-indendent way of specifying feed configs.
# Once the RFC for the DISTRO_FEED_CONFIGS variable name is approved,
# we can remove this default definition and set it in the distro config.
DISTRO_FEED_CONFIGS ?= "${ANGSTROM_FEED_CONFIGS}"

DEPENDS = "\
	task-boot \
	${DISTRO_SSH_DAEMON} \
	${DISTRO_PACKAGE_MANAGER} \
	${DISTRO_FEED_CONFIGS} \
	${@base_contains('MACHINE_FEATURES', 'ext2', 'task-base-ext2', '', d)} \
	${@base_contains('MACHINE_FEATURES', 'usbhost', 'task-base-usbhost', '', d)} \
	"

IMAGE_INSTALL = "\
	task-boot \
	${DISTRO_SSH_DAEMON} \
	${DISTRO_PACKAGE_MANAGER} \
	${DISTRO_FEED_CONFIGS} \
	${@base_contains('MACHINE_FEATURES', 'ext2', 'task-base-ext2', '', d)} \
	${@base_contains('MACHINE_FEATURES', 'usbhost', 'task-base-usbhost', '', d)} \
	"

export IMAGE_BASENAME = "base-image"
IMAGE_LINGUAS = ""

inherit image

# Key features of this image are:

# 1) Must be able to mount attached storage devices like SD cards, CF
# cards, internal disks, external USB disks, etc.  Should support
# various filesystem choices, but ext2 at a minimum.  The rationale
# for this is that you need storage to be able to install significant
# new functionality.

# 2) Must be able to boot from internal flash, or directly from a
# filesystem stored on the attached storage.  The rationale for this
# is that you will want to boot from attached storage instead of
# messing around with ipkg-link.

# Rationale and policy:

# 'base-image' is the smallest possible image which allows you to ssh
# into a device via it's native network interface, and install
# packages from feeds across the network into internal flash or onto
# an attached storage device.

# It is "larger" than minimal-image (which is strictly only that which
# is required to boot and get ssh access to the device, and nothing
# else), but is "smaller" than console-image (which has a whole lot of
# stuff in it which could easily be ipkg installed after boot rather
# than being in the initial rootfs).

# It is required to always be small enough to fit in the internal
# flash rootfs partition of an NSLU2 (as an example of the smaller end
# of flash sizes that OE supports), and features will be removed from
# the image to ensure that this is always the case.  Any feature that
# can be installed over the network using the package manager after
# the first boot is always fair game for removal at any time, and
# patches are welcome to make base-image as small as possible while
# still retaining the ability to subsequently install that feature.