#@TYPE: Distribution
#@NAME: OpenSlug
#@DESCRIPTION: OpenSlug Linux Distribution for the NSLU2

#----------------------------------------------------------------------------------
# STANDARD OpenSlug DEFINITIONS
#----------------------------------------------------------------------------------
DISTRO_NAME = "OpenSlug"
DISTRO_VERSION = "2.4-beta"
DISTRO_TYPE ?= "beta"

TARGET_FPU = "soft"
TARGET_OS = "linux"

USE_NLS ?= "no"
USE_NLS_glib-2.0 = "yes"

INHERIT += " package_ipk debian nslu2_flashimg"

# NOTE: to build new packages set OPENSLUG_EXTRA_BBFILES to the full path name to
# the .bb files for the packages to build - see openslug-packages.conf in this
# directory
OPENSLUG_EXTRA_BBFILES ?= ""

# pull in the frozen list of bbfiles - this sets BBFILES and this will override any
# setting in local.conf
include conf/distro/freeze.conf

#----------------------------------------------------------------------------------
# FEEDS
#  The following lines define where on the internet OpenSlug looks for packages
#  when downloading new packages or updating existing packages.  Additional feeds
#  (such as a local feed) can be defined in local.conf
#----------------------------------------------------------------------------------
# Add to the user's feeds from local.conf (there may be none)
FEED_URIS_append_linux += "cross##http://ipkg.nslu2-linux.org/feeds/openslug/cross/${DISTRO_VERSION}"
FEED_URIS_append_linux += "native##http://ipkg.nslu2-linux.org/feeds/openslug/native/${DISTRO_VERSION}"

#
# Uncomment the following to get the unstable feeds
#FEED_URIS_append_linux += "unstable_cross##http://ipkg.nslu2-linux.org/feeds/openslug/cross/unstable"
#FEED_URIS_append_linux += "unstable_native##http://ipkg.nslu2-linux.org/feeds/openslug/native/unstable"

#----------------------------------------------------------------------------------
# FIRMWARE CONFIGURATION
#----------------------------------------------------------------------------------
# IMAGE BUILD OPTIONS
# -------------------
IMAGE_FSTYPES = "jffs2"

OPENSLUG_DEVICE_TABLE = "${@bb.which(bb.data.getVar('BBPATH', d, 1), 'files/device_table-openslug.txt')}"
EXTRA_IMAGECMD_jffs2 = "--pad --big-endian --eraseblock=0x20000 -D ${OPENSLUG_DEVICE_TABLE}"

# CMDLINE* macros define the kernel command line.  CMDLINE_DEBUG is provided
# to enable/disable debugging in the distro.  Here noirqdebug is used to
# remove the messages about unhandled interrupts - people debugging interrupt
# issues in the kernel need to cancel this (set CMDLINE_DEBUG empty in local.conf)
CMDLINE_DEBUG = "noirqdebug"

# EXTRA PACKAGES
# --------------
# Filesystem support modules are listed in here for easy removal,
# as is the lrzsz serial package and other kernel modules which are
# not absolutely required for boot.
# NOTE: only jffs2 support is an absolute requirement of boot, even
# the ext2/ext3 support is optional!
OPENSLUG_EXT2_PROGS =  "e2fsprogs-mke2fs e2fsprogs-fsck e2fsprogs-e2fsck"
OPENSLUG_REISER_PROGS = "reiserfsprogs"

# The standard firmware contents and additional packages built as requirements
# of the firmware are defined here in OPENSLUG_STANDARD_RDEPENDS and
# OPENSLUG_STANDARD_DEPENDS respectively.
OPENSLUG_STANDARD_DEPENDS = ""
OPENSLUG_STANDARD_RDEPENDS = ""

# Support for a variety of file systems is built in to the openslug
# image, programs to format disks with these file systems may be
# added or removed.  By default ext2. ext3 and reiserfs supported
# is included by the following lines.
# 
# These lines add support for formatting ext2 and ext3 file systems
# on a hard disk attached to the NSLU2.  ext3 is the standard Linux
# file system.
OPENSLUG_STANDARD_DEPENDS += "e2fsprogs"
OPENSLUG_STANDARD_RDEPENDS += "${OPENSLUG_EXT2_PROGS}"

# These lines add support for formatting reiserfs file systems on
# a hard disk.
OPENSLUG_STANDARD_DEPENDS += "reiserfsprogs"
OPENSLUG_STANDARD_RDEPENDS += "${OPENSLUG_REISER_PROGS}"

# These lines add a build of the 'upslug' program which may be
# used to download the final image to an NSLU2.  The program can
# be found within the tmp/work/upslug-native* directory.
OPENSLUG_STANDARD_DEPENDS += "upslug-native"

# These lines add support for an X/Y/ZModem package called lrzsz
# (this is of use for people with modified NSLU2 hardware which
# supports a serial port.)
OPENSLUG_STANDARD_DEPENDS += "lrzsz"
OPENSLUG_STANDARD_RDEPENDS += "lrzsz"

# The 'standard' values are the defaults for the 'extra' packages added
# to the firmware image.  None of these things are requirements to have
# a bootable, useable, system however they *are* expected to be present
# in OpenSlug - see osuclibc for a more minimal configuration and some
# more instructions about how to make a non-openslug image.
OPENSLUG_EXTRA_DEPENDS  ?= "${OPENSLUG_STANDARD_DEPENDS}"
OPENSLUG_EXTRA_RDEPENDS ?= "${OPENSLUG_STANDARD_RDEPENDS}"

# Filesystem selection: set in local.conf to override.  Adding entries
# here adds the module to the image.  The module must be built as part
# of openslug-kernel (i.e. it must be specified as a module in the
# defconfig file).  The NLS support charset modules must be given
# explicitly and must match the codepage/iocharset and NLS handling
# for the file systems which require them.  The installed lanugage
# set is minimal but sufficient for any file system (since it uses
# utf8).  See http://www.nslu2-linux.orgwiki/HowTo/MountFATFileSystems
# for more information on the language behaviour of the DOS file
# systems.
#
# KERNEL LEVEL FILE SYSTEM SUPPORT
# --------------------------------
# NOTE: removing kernel-module-nfs from this list will prevent NFS
# boot (however you can do a simple flash file system boot - no
# attached disk - and install the nfs modules from ssh.)
OPENSLUG_EXTRA_FILESYSTEMS ?= "\
kernel-module-ext2 \
kernel-module-jbd \
kernel-module-ext3 \
kernel-module-nfs \
kernel-module-vfat \
kernel-module-ntfs \
kernel-module-isofs \
kernel-module-udf \
kernel-module-reiserfs \
kernel-module-nls-cp437 \
kernel-module-nls-utf8 \
"

# This documents other file systems which are built but not installed
# by default in the flash image.
#
# kernel-module-msdos - mounts a FAT file system without long file names
#                       (use kernel-module-vfat, it shows the long names
#                       if present.)

OPENSLUG_EXTRA_INSTALL ?= "${OPENSLUG_EXTRA_RDEPENDS} ${OPENSLUG_EXTRA_FILESYSTEMS}"

#----------------------------------------------------------------------------------
# PACKAGE VERSION CONTROL
#----------------------------------------------------------------------------------
# Select the correct versions of the compiler tools (note that there
# is also some selection in machine/nslu2.conf)
PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc-initial:gcc-cross-initial"
PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc:gcc-cross"
PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}g++:gcc-cross"

# Select the correct versions of the kernel and modules
PREFERRED_PROVIDER_virtual/kernel ?= "openslug-kernel"
PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}depmod:module-init-tools-cross"
PREFERRED_VERSION_openslug-kernel ?= "2.6.12.2"

PREFERRED_VERSION_ixp4xx-csr ?= "1.4"
PREFERRED_VERSION_ixp425-eth ?= "1.1"