distro/oel: Change default Linux kernel to 4.18
[meta-ossystems-base.git] / conf / distro / include / oel.inc
1 DISTRO_VERSION = "18.04-snapshot-${DATE}"
2
3 SDK_VENDOR = "-oelsdk"
4 SDK_VERSION := "${@'${DISTRO_VERSION}'.replace('snapshot-${DATE}','snapshot')}"
5 SDK_NAME_PREFIX = "${DISTRO}"
6
7 MAINTAINER = "O.S. Systems Software LTDA. <contato@ossystems.com.br>"
8
9 TARGET_VENDOR = "-oel"
10
11 LOCALCONF_VERSION = "1"
12
13 # Target i686 for the sdk binaries, rather than the build arch.
14 #
15 # Other options: i586, x86_64
16 SDKMACHINE ?= "x86_64"
17
18 # Paths
19 OELDIR ?= "${COREBASE}/.."
20 DEPLOY_DIR_IMAGE = "${DEPLOY_DIR}/images/${MACHINE}"
21 SDKPATH = "/opt/${DISTRO}/${SDK_VERSION}"
22
23 # Move the persist db up out of TMPDIR so it survives its removal
24 PERSISTENT_DIR = "${TOPDIR}/db"
25
26 # Restore any available saved headrevs
27 DUMP_HEADREVS_DB ?= '${OELDIR}/${MACHINE}/saved_persist_data.db'
28 INHERIT += "restore-dumped-headrevs"
29
30 # LAYERDIRs for our layers, by name
31 INHERIT += "layerdirs"
32
33 # Do an up front type check to sanity check user configuration
34 INHERIT += "typecheck"
35
36 # QA check settings - a little stricter than the OE-Core defaults
37 WARN_TO_ERROR_QA = "already-stripped compile-host-path install-host-path \
38                     installed-vs-shipped ldflags pn-overrides rpaths staticdev \
39                     useless-rpaths"
40 WARN_QA_remove = "${WARN_TO_ERROR_QA}"
41 ERROR_QA_append = " ${WARN_TO_ERROR_QA}"
42
43 # Also check for host user contamination in the rootfs
44 ROOTFS_POSTPROCESS_COMMAND_append = " rootfs_check_host_user_contaminated;"
45
46 SANITY_TESTED_DISTROS ?= " \
47         ubuntu-15.04 \n \
48         ubuntu-16.04 \n \
49         ubuntu-16.10 \n \
50         fedora-24 \n \
51         fedora-25 \n \
52         centos-7 \n \
53         debian-8 \n \
54         debian-9 \n \
55         opensuse-42.2 \n \
56 "
57
58 #
59 # OELAYOUT_ABI allows us to notify users when the format of TMPDIR changes in
60 # an incompatible way. Such changes should usually be detailed in the commit
61 # that breaks the format and have been previously discussed on the mailing list
62 # with general agreement from the core team.
63 #
64 OELAYOUT_ABI = "12"
65
66 DISTRO_EXTRA_RDEPENDS += " ${OEL_DEFAULT_EXTRA_RDEPENDS}"
67 DISTRO_EXTRA_RRECOMMENDS += " ${OEL_DEFAULT_EXTRA_RRECOMMENDS}"
68
69 ####
70 #### Distro Features & Recipe Configuration
71 ####
72
73 # Override these in oel based distros
74 OEL_DEFAULT_DISTRO_FEATURES = "largefile opengl multiarch argp xattr"
75 OEL_DEFAULT_EXTRA_RDEPENDS = "packagegroup-core-boot"
76 OEL_DEFAULT_EXTRA_RRECOMMENDS = ""
77
78 DISTRO_FEATURES ?= "${DISTRO_FEATURES_LIBC} \
79                     ${OEL_DEFAULT_DISTRO_FEATURES}"
80
81 # Exclude DATE from DISTRO/SDK_VERSION checksums
82 DISTRO_VERSION[vardepsexclude] = "DATE"
83 SDK_VERSION[vardepsexclude] = "DATE"
84
85 # Lower the priority of meta-oe, as we prefer oe-core when recipes are duped
86 BBFILE_PRIORITY_openembedded-layer = "1"
87
88 QEMU_TARGETS ?= "arm aarch64 i386 x86_64"
89 # Other QEMU_TARGETS "mips mipsel mips64 mips64el nios2 ppc sh4"
90
91 # Preferred kernel version for QEMU based machines
92 PREFERRED_VERSION_linux-yocto ?= "4.18%"
93
94 OELQEMUDEPS = "${@bb.utils.contains("INCOMPATIBLE_LICENSE", "GPLv3", "", "packagegroup-core-device-devel",d)}"
95 DISTRO_EXTRA_RDEPENDS_append_qemuarm = " ${OELQEMUDEPS}"
96 DISTRO_EXTRA_RDEPENDS_append_qemuarm64 = " ${OELQEMUDEPS}"
97 DISTRO_EXTRA_RDEPENDS_append_qemumips = " ${OELQEMUDEPS}"
98 DISTRO_EXTRA_RDEPENDS_append_qemuppc = " ${OELQEMUDEPS}"
99 DISTRO_EXTRA_RDEPENDS_append_qemux86 = " ${OELQEMUDEPS}"
100 DISTRO_EXTRA_RDEPENDS_append_qemux86-64 = " ${OELQEMUDEPS}"
101
102 TCLIBCAPPEND = ""
103
104 # Use a local PR server by default
105 PRSERV_HOST ?= "localhost:0"
106
107 # Prefer pkgconfig over pkgconf
108 PREFERRED_PROVIDER_pkgconfig = "pkgconfig"
109 PREFERRED_PROVIDER_pkgconfig-native = "pkgconfig-native"
110 PREFERRED_PROVIDER_nativesdk-pkgconfig = "nativesdk-pkgconfig"
111
112 ####
113 #### Inherits
114 ####
115
116 # Remove .la files for packages
117 INHERIT += "remove-libtool"
118
119 # We want information about image contents
120 INHERIT += "buildhistory"
121 BUILDHISTORY_DIR ?= "${TOPDIR}/buildhistory"
122 BUILDHISTORY_COMMIT ?= "1"
123
124 # Do an up front type check to sanity check user configuration
125 INHERIT += "typecheck"
126
127 # Allow blacklisting recipes
128 INHERIT += "blacklist"
129
130 # Copy the image license manifest into DEPLOY_DIR_IMAGE
131 INHERIT += "deploy-license-manifest"
132
133 # Ensure we have what we need for the below type checks
134 OE_IMPORTS += "oe.terminal"
135
136 # Restore any available saved headrevs (used for our installers)
137 DUMP_HEADREVS_DB ?= "${MELDIR}/${MACHINE}/saved_persist_data.db"
138 INHERIT += "restore-dumped-headrevs"
139
140 ####
141 #### Preferences and providers
142 ####
143
144 # Prefer normal jpeg implementation
145 PREFERRED_PROVIDER_jpeg               ??= "jpeg"
146 PREFERRED_PROVIDER_jpeg-native        ??= "jpeg-native"
147
148 # Prefer O.S. Systems U-Boot fork
149 #PREFERRED_PROVIDER_u-boot              ?= "u-boot-ossystems"
150 #PREFERRED_PROVIDER_virtual/bootloader  ?= "u-boot-ossystems"
151
152 # Ensure that we are not getting GUI for latencytop, as we don't want x11 to
153 # be pulled into our console image.
154 PACKAGECONFIG_pn-latencytop = ""
155
156 # Ensure that we are not getting GUI for sysprof, as we don't want x11 to
157 # be pulled into our console image.
158 PACKAGECONFIG_pn-sysprof = ""
159
160 # Enable systemd in pulseaudio when appropriate
161 PACKAGECONFIG_append_pn-pulseaudio = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', ' systemd', '', d)}"
162
163 # Since many embedded systems don't have non-root users, allow autospawn for
164 # root as well.
165 PACKAGECONFIG_append_pn-pulseaudio = " autospawn-for-root"
166
167 # Ensure we have the writable paths we need in a read-only rootfs
168 VOLATILE_BINDS_append = "\
169         /var/volatile/root-home ${ROOT_HOME}\n\
170         /var/volatile/media /media\n\
171         /var/volatile/resolv.conf /etc/resolv.conf\n\
172 "
173
174 # Override pulseaudio to use a system rather than user systemd service when we
175 # don't have pam available, as the user service won't be started
176 systemd_userunitdir_pn-pulseaudio = "${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${systemd_unitdir}/user', '${systemd_unitdir}/system', d)}"
177
178 # We prefer busybox rather than tinylogin
179 VIRTUAL-RUNTIME_login_manager = "busybox"
180
181 # Default to these image types
182 IMAGE_FSTYPES ?= "tar.bz2 ext3"
183 UBI_VOLNAME = "rootfs"
184
185 # Quadruple the normal. 'du' is not a good way to really see how much
186 # space will be needed and fails badly as the fs size grows.
187 IMAGE_ROOTFS_EXTRA_SPACE = "40960"
188
189 # Sane default locales for images
190 GLIBC_GENERATE_LOCALES ?= "en_US en_US.UTF-8"
191 IMAGE_LINGUAS ?= "en-us"
192
193 # Include nss-myhostname for sysvinit, so the hostname resolves. systemd
194 # includes myhostname itself.
195 DISTRO_EXTRA_RRECOMMENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', 'nss-myhostname', d)}"
196
197 ####
198 #### Workarounds & Overrides
199 ####
200
201 # Work around missing vardep bug in bitbake
202 sstate_stage_all[vardeps] += "sstate_stage_dirs"
203
204 # Restore any available saved headrevs (used for our installers)
205 DUMP_HEADREVS_DB ?= "${MELDIR}/${MACHINE}/saved_persist_data.db"
206 INHERIT += "restore-dumped-headrevs"
207
208 # LAYERDIRs for our layers, by name
209 INHERIT += "layerdirs"
210
211 # Layer name and path for the recipe
212 RECIPE_LAYERNAME = "${@bb.utils.get_file_layer('${FILE}', d) or 'UNKNOWN'}"
213 RECIPE_LAYERDIR = "${LAYERDIR_${RECIPE_LAYERNAME}}"
214 LAYERDIR_UNKNOWN = 'UNKNOWN'
215
216 # Support pulling downloads and sstate from inside individual layers. This
217 # will let us ship self contained layers to a release without risking file
218 # conflicts between them.
219 PREMIRRORS_prepend = "${@'.*://.*/.* file://${RECIPE_LAYERDIR}/downloads\n' if '${RECIPE_LAYERDIR}' != 'UNKNOWN' else ''}"
220 LAYER_SSTATE_MIRRORS = "${@" ".join('file://%s' % sl for sl in ('%s/sstate-cache' % l for l in '${BBLAYERS}'.split()) if os.path.exists(sl))}"
221 SSTATE_MIRROR_SITES_prepend = "${LAYER_SSTATE_MIRRORS} "
222
223 ####
224 #### Includes
225 ####
226
227 # Ensure that we implement shared state reuse handling for non-target recipes
228 require conf/distro/include/sstate.inc
229
230 # Disable static libs by default
231 require conf/distro/include/no-static-libs.inc
232
233 # Enable uninative
234 require conf/distro/include/yocto-uninative.inc
235 INHERIT += "uninative"
236
237 DISTROOVERRIDES = "oel"
238
239 # This function changes the default tune for machines which are based on armv7a
240 # to use common tune value.
241 def arm_tune_handler(d):
242     features = d.getVar('TUNE_FEATURES', True).split()
243     if 'armv7a' in features or 'armv7ve' in features:
244         tune = 'armv7ahf'
245         if 'bigendian' in features:
246             tune += 'b'
247         if 'vfpv3' in features:
248             tune += '-vfpv3'
249         if 'vfpv3d16' in features:
250             tune += '-vfpv3d16'
251         if 'neon' in features:
252             tune += '-neon'
253         if 'vfpv4' in features:
254             tune += '-vfpv4'
255     else:
256         tune = d.getVar('DEFAULTTUNE', True)
257     return tune
258
259 DEFAULTTUNE_oel := "${@arm_tune_handler(d)}"
260
261 DISTRO_ARM_INSTRUCTION ?= "arm"
262 DISTRO_ARM_INSTRUCTION_armv4 ?= "arm"
263 DISTRO_ARM_INSTRUCTION_armv5te ?= "arm"
264 DISTRO_ARM_INSTRUCTION_armv6 ?= "arm"
265 ARM_INSTRUCTION_SET ??= "${DISTRO_ARM_INSTRUCTION}"
266
267 HOSTTOOLS += "id"