xref: /OK3568_Linux_fs/yocto/meta-poky/conf/distro/poky-tiny.conf (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# Distribution definition for: poky-tiny
2*4882a593Smuzhiyun#
3*4882a593Smuzhiyun# Copyright (c) 2011, Intel Corporation.
4*4882a593Smuzhiyun# All rights reserved.
5*4882a593Smuzhiyun#
6*4882a593Smuzhiyun# This file is released under the MIT license as described in
7*4882a593Smuzhiyun# ../meta/COPYING.MIT.
8*4882a593Smuzhiyun#
9*4882a593Smuzhiyun# Poky-tiny is intended to define a tiny Linux system comprised of a
10*4882a593Smuzhiyun# Linux kernel tailored to support each specific MACHINE and busybox.
11*4882a593Smuzhiyun# Poky-tiny sets some basic policy to ensure a usable system while still
12*4882a593Smuzhiyun# keeping the rootfs and kernel image as small as possible.
13*4882a593Smuzhiyun#
14*4882a593Smuzhiyun# The policies defined are intended to meet the following goals:
15*4882a593Smuzhiyun# o Serial consoles only (no framebuffer or VGA console)
16*4882a593Smuzhiyun# o Basic support for IPV4 networking
17*4882a593Smuzhiyun# o Single user ash shell
18*4882a593Smuzhiyun# o Static images (no support for adding packages or libraries later)
19*4882a593Smuzhiyun# o Read-only or RAMFS root filesystem
20*4882a593Smuzhiyun# o Combined Linux kernel + rootfs in under 4MB
21*4882a593Smuzhiyun# o Allow the user to select between eglibc or uclibc with the TCLIBC variable
22*4882a593Smuzhiyun#
23*4882a593Smuzhiyun# This is currently a partial definition, the following tasks remain:
24*4882a593Smuzhiyun# [ ] Integrate linux-yocto-tiny ktype into linux-yocto
25*4882a593Smuzhiyun# [ ] Define linux-yocto-tiny configs for all supported BSPs
26*4882a593Smuzhiyun# [ ] Drop ldconfig from the installation
27*4882a593Smuzhiyun# [ ] Modify the runqemu scripts to work with ext2 parameter:
28*4882a593Smuzhiyun#     runqemu qemux86 qemuparams="-nographic" bootparams="console=ttyS0,115200 root=0800"
29*4882a593Smuzhiyun# [ ] Modify busybox to allow for DISTRO_FEATURES-like configuration
30*4882a593Smuzhiyun
31*4882a593Smuzhiyunrequire conf/distro/poky.conf
32*4882a593Smuzhiyunrequire conf/distro/include/gcsections.inc
33*4882a593Smuzhiyun
34*4882a593SmuzhiyunDISTRO = "poky-tiny"
35*4882a593SmuzhiyunDISTROOVERRIDES = "poky:poky-tiny"
36*4882a593SmuzhiyunTCLIBC = "musl"
37*4882a593Smuzhiyun
38*4882a593SmuzhiyunFULL_OPTIMIZATION="-Os -pipe ${DEBUG_FLAGS}"
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun# FIXME: consider adding a new "tiny" feature
41*4882a593Smuzhiyun#DISTRO_FEATURES_append = " tiny"
42*4882a593Smuzhiyun
43*4882a593Smuzhiyun# Distro config is evaluated after the machine config, so we have to explicitly
44*4882a593Smuzhiyun# set the kernel provider to override a machine config.
45*4882a593SmuzhiyunPREFERRED_PROVIDER_virtual/kernel = "linux-yocto-tiny"
46*4882a593SmuzhiyunPREFERRED_VERSION_linux-yocto-tiny ?= "5.15%"
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun# We can use packagegroup-core-boot, but in the future we may need a new packagegroup-core-tiny
49*4882a593Smuzhiyun#POKY_DEFAULT_EXTRA_RDEPENDS += "packagegroup-core-boot"
50*4882a593Smuzhiyun# Drop kernel-module-af-packet from RRECOMMENDS
51*4882a593SmuzhiyunPOKY_DEFAULT_EXTRA_RRECOMMENDS = ""
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun# FIXME: what should we do with this?
54*4882a593SmuzhiyunTCLIBCAPPEND = ""
55*4882a593Smuzhiyun
56*4882a593Smuzhiyun# Disable wide char support for ncurses as we don't include it in
57*4882a593Smuzhiyun# in the LIBC features below.
58*4882a593Smuzhiyun# Leave native enable to avoid build failures
59*4882a593SmuzhiyunENABLE_WIDEC = "false"
60*4882a593SmuzhiyunENABLE_WIDEC:class-native = "true"
61*4882a593Smuzhiyun
62*4882a593Smuzhiyun# Drop native language support. This removes the
63*4882a593Smuzhiyun# eglibc->bash->gettext->libc-posix-clang-wchar dependency.
64*4882a593SmuzhiyunUSE_NLS="no"
65*4882a593Smuzhiyun
66*4882a593Smuzhiyun# Comment out any of the lines below to disable them in the build
67*4882a593Smuzhiyun# DISTRO_FEATURES options:
68*4882a593Smuzhiyun# alsa bluetooth ext2 pcmcia usbgadget usbhost wifi nfs zeroconf pci
69*4882a593SmuzhiyunDISTRO_FEATURES_TINY = "pci"
70*4882a593SmuzhiyunDISTRO_FEATURES_NET = "ipv4 ipv6"
71*4882a593SmuzhiyunDISTRO_FEATURES_USB = "usbhost"
72*4882a593Smuzhiyun#DISTRO_FEATURES_USBGADGET = "usbgadget"
73*4882a593Smuzhiyun#DISTRO_FEATURES_WIFI = "wifi"
74*4882a593Smuzhiyun
75*4882a593SmuzhiyunDISTRO_FEATURES = "${DISTRO_FEATURES_TINY} \
76*4882a593Smuzhiyun                   ${DISTRO_FEATURES_NET} \
77*4882a593Smuzhiyun                   ${DISTRO_FEATURES_USB} \
78*4882a593Smuzhiyun                   ${DISTRO_FEATURES_USBGADGET} \
79*4882a593Smuzhiyun                   ${DISTRO_FEATURES_WIFI} \
80*4882a593Smuzhiyun                  "
81*4882a593Smuzhiyun
82*4882a593Smuzhiyun# Enable LFS - see bug YOCTO #5865
83*4882a593SmuzhiyunDISTRO_FEATURES:append:libc-musl = " largefile"
84*4882a593Smuzhiyun
85*4882a593SmuzhiyunDISTRO_FEATURES:class-native = "${DISTRO_FEATURES_DEFAULT} ${POKY_DEFAULT_DISTRO_FEATURES}"
86*4882a593SmuzhiyunDISTRO_FEATURES:class-nativesdk = "${DISTRO_FEATURES_DEFAULT} ${POKY_DEFAULT_DISTRO_FEATURES}"
87*4882a593Smuzhiyun
88*4882a593Smuzhiyun# enable mdev/busybox for init
89*4882a593SmuzhiyunINIT_MANAGER ?= "mdev-busybox"
90*4882a593Smuzhiyun
91*4882a593Smuzhiyun# FIXME: Consider adding "modules" to MACHINE_FEATURES and using that in
92*4882a593Smuzhiyun# packagegroup-core-base to select modutils-initscripts or not.  Similar with "net" and
93*4882a593Smuzhiyun# netbase.
94*4882a593Smuzhiyun
95*4882a593Smuzhiyun# By default we only support initramfs. We don't build live as that
96*4882a593Smuzhiyun# pulls in a lot of dependencies for the live image and the installer, like
97*4882a593Smuzhiyun# udev, grub, etc.  These pull in gettext, which fails to build with wide
98*4882a593Smuzhiyun# character support.
99*4882a593SmuzhiyunIMAGE_FSTYPES = "cpio.gz"
100*4882a593SmuzhiyunQB_DEFAULT_FSTYPE = "cpio.gz"
101*4882a593Smuzhiyun
102*4882a593Smuzhiyun# Drop v86d from qemu dependency list (we support serial)
103*4882a593Smuzhiyun# Drop grub from meta-intel BSPs
104*4882a593Smuzhiyun# FIXME: A different mechanism is needed here. We could define -tiny
105*4882a593Smuzhiyun#        variants of all compatible machines, but that leads to a lot
106*4882a593Smuzhiyun#        more machine configs to maintain long term.
107*4882a593SmuzhiyunMACHINE_ESSENTIAL_EXTRA_RDEPENDS = ""
108*4882a593Smuzhiyun
109*4882a593Smuzhiyun# The mtrace script included by eglibc is a perl script. This means the system
110*4882a593Smuzhiyun# will build perl in case this package is installed. Since we don't care about
111*4882a593Smuzhiyun# this script for the purposes of tiny, remove the dependency from here.
112*4882a593SmuzhiyunRDEPENDS:${PN}-mtrace:pn-eglibc = ""
113*4882a593Smuzhiyun
114*4882a593SmuzhiyunSKIP_RECIPE[build-appliance-image] = "not buildable with poky-tiny"
115*4882a593SmuzhiyunSKIP_RECIPE[core-image-rt] = "not buildable with poky-tiny"
116*4882a593SmuzhiyunSKIP_RECIPE[core-image-rt-sdk] = "not buildable with poky-tiny"
117*4882a593SmuzhiyunSKIP_RECIPE[core-image-sato] = "not buildable with poky-tiny"
118*4882a593SmuzhiyunSKIP_RECIPE[core-image-sato-dev] = "not buildable with poky-tiny"
119*4882a593SmuzhiyunSKIP_RECIPE[core-image-sato-sdk] = "not buildable with poky-tiny"
120*4882a593SmuzhiyunSKIP_RECIPE[core-image-x11] = "not buildable with poky-tiny"
121*4882a593SmuzhiyunSKIP_RECIPE[core-image-weston] = "not buildable with poky-tiny"
122*4882a593Smuzhiyun
123*4882a593Smuzhiyun# Disable python usage in opkg-utils since it won't build with tiny config
124*4882a593SmuzhiyunPACKAGECONFIG:remove:pn-opkg-utils = "python"
125