# Distribution definition for: poky-tiny
#
# Copyright (c) 2011, Intel Corporation.
# All rights reserved.
#
# This file is released under the MIT license as described in
# ../meta/COPYING.MIT.
#
# Poky-tiny is intended to define a tiny Linux system comprised of a
# Linux kernel tailored to support each specific MACHINE and busybox.
# Poky-tiny sets some basic policy to ensure a usable system while still
# keeping the rootfs and kernel image as small as possible.
#
# The policies defined are intended to meet the following goals:
# o Serial consoles only (no framebuffer or VGA console)
# o Basic support for IPV4 networking
# o Single user ash shell
# o Static images (no support for adding packages or libraries later)
# o Read-only or RAMFS root filesystem
# o Combined Linux kernel + rootfs in under 4MB
# o Allow the user to select between eglibc or uclibc with the TCLIBC variable
#
# This is currently a partial definition, the following tasks remain:
# [ ] Integrate linux-yocto-tiny ktype into linux-yocto
# [ ] Define linux-yocto-tiny configs for all supported BSPs
# [ ] Drop ldconfig from the installation
# [ ] Modify the runqemu scripts to work with ext2 parameter:
#     runqemu qemux86 qemuparams="-nographic" bootparams="console=ttyS0,115200 root=0800"
# [ ] Modify busybox to allow for DISTRO_FEATURES-like configuration

require conf/distro/poky.conf
require conf/distro/include/gcsections.inc

DISTRO = "poky-tiny"
DISTROOVERRIDES = "poky:poky-tiny"
TCLIBC = "musl"

FULL_OPTIMIZATION="-Os -pipe ${DEBUG_FLAGS}"

# FIXME: consider adding a new "tiny" feature
#DISTRO_FEATURES_append = " tiny"

# Distro config is evaluated after the machine config, so we have to explicitly
# set the kernel provider to override a machine config.
PREFERRED_PROVIDER_virtual/kernel = "linux-yocto-tiny"
PREFERRED_VERSION_linux-yocto-tiny ?= "5.10%"

# We can use packagegroup-core-boot, but in the future we may need a new packagegroup-core-tiny
#POKY_DEFAULT_EXTRA_RDEPENDS += "packagegroup-core-boot"
# Drop kernel-module-af-packet from RRECOMMENDS
POKY_DEFAULT_EXTRA_RRECOMMENDS = ""

# FIXME: what should we do with this?
TCLIBCAPPEND = ""

# Disable wide char support for ncurses as we don't include it in
# in the LIBC features below.
# Leave native enable to avoid build failures
ENABLE_WIDEC = "false"
ENABLE_WIDEC_class-native = "true"

# Drop native language support. This removes the
# eglibc->bash->gettext->libc-posix-clang-wchar dependency.
USE_NLS="no"

# Comment out any of the lines below to disable them in the build
# DISTRO_FEATURES options:
# alsa bluetooth ext2 pcmcia usbgadget usbhost wifi nfs zeroconf pci
DISTRO_FEATURES_TINY = "pci"
DISTRO_FEATURES_NET = "ipv4 ipv6"
DISTRO_FEATURES_USB = "usbhost"
#DISTRO_FEATURES_USBGADGET = "usbgadget"
#DISTRO_FEATURES_WIFI = "wifi"

DISTRO_FEATURES = "${DISTRO_FEATURES_TINY} \
                   ${DISTRO_FEATURES_NET} \
                   ${DISTRO_FEATURES_USB} \
                   ${DISTRO_FEATURES_USBGADGET} \
                   ${DISTRO_FEATURES_WIFI} \
                  "

# Enable LFS - see bug YOCTO #5865
DISTRO_FEATURES_append_libc-uclibc = " largefile"
DISTRO_FEATURES_append_libc-musl = " largefile"

DISTRO_FEATURES_class-native = "${DISTRO_FEATURES_DEFAULT} ${POKY_DEFAULT_DISTRO_FEATURES}"
DISTRO_FEATURES_class-nativesdk = "${DISTRO_FEATURES_DEFAULT} ${POKY_DEFAULT_DISTRO_FEATURES}"

# enable mdev/busybox for init
INIT_MANAGER ?= "mdev-busybox"

# FIXME: Consider adding "modules" to MACHINE_FEATURES and using that in
# packagegroup-core-base to select modutils-initscripts or not.  Similar with "net" and
# netbase.

# By default we only support initramfs. We don't build live as that
# pulls in a lot of dependencies for the live image and the installer, like
# udev, grub, etc.  These pull in gettext, which fails to build with wide
# character support.
IMAGE_FSTYPES = "cpio.gz"

QB_DEFAULT_FSTYPE = "${IMAGE_FSTYPES}"

# Drop v86d from qemu dependency list (we support serial)
# Drop grub from meta-intel BSPs
# FIXME: A different mechanism is needed here. We could define -tiny
#        variants of all compatible machines, but that leads to a lot
#        more machine configs to maintain long term.
MACHINE_ESSENTIAL_EXTRA_RDEPENDS = ""

# The mtrace script included by eglibc is a perl script. This means the system
# will build perl in case this package is installed. Since we don't care about
# this script for the purposes of tiny, remove the dependency from here.
RDEPENDS_${PN}-mtrace_pn-eglibc = ""

PNBLACKLIST[build-appliance-image] = "not buildable with poky-tiny"
PNBLACKLIST[core-image-base] = "not buildable with poky-tiny"
PNBLACKLIST[core-image-full-cmdline] = "not buildable with poky-tiny"
PNBLACKLIST[core-image-rt] = "not buildable with poky-tiny"
PNBLACKLIST[core-image-rt-sdk] = "not buildable with poky-tiny"
PNBLACKLIST[core-image-sato] = "not buildable with poky-tiny"
PNBLACKLIST[core-image-sato-dev] = "not buildable with poky-tiny"
PNBLACKLIST[core-image-sato-sdk] = "not buildable with poky-tiny"
PNBLACKLIST[core-image-x11] = "not buildable with poky-tiny"
PNBLACKLIST[core-image-weston] = "not buildable with poky-tiny"

# Disable python usage in opkg-utils since it won't build with tiny config
PACKAGECONFIG_remove_pn-opkg-utils = "python"
