diff options
Diffstat (limited to 'import-layers/yocto-poky/meta-yocto-bsp')
30 files changed, 763 insertions, 0 deletions
diff --git a/import-layers/yocto-poky/meta-yocto-bsp/conf/layer.conf b/import-layers/yocto-poky/meta-yocto-bsp/conf/layer.conf new file mode 100644 index 000000000..44dbca60f --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/conf/layer.conf @@ -0,0 +1,11 @@ +# We have a conf and classes directory, add to BBPATH +BBPATH .= ":${LAYERDIR}" + +# We have recipes-* directories, add to BBFILES +BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ + ${LAYERDIR}/recipes-*/*/*.bbappend" + +BBFILE_COLLECTIONS += "yoctobsp" +BBFILE_PATTERN_yoctobsp = "^${LAYERDIR}/" +BBFILE_PRIORITY_yoctobsp = "5" +LAYERVERSION_yoctobsp = "3" diff --git a/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/beaglebone.conf b/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/beaglebone.conf new file mode 100644 index 000000000..179d135a5 --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/beaglebone.conf @@ -0,0 +1,39 @@ +#@TYPE: Machine +#@NAME: Beaglebone machine +#@DESCRIPTION: Machine configuration for http://beagleboard.org/bone and http://beagleboard.org/black boards + +PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg" +XSERVER ?= "xserver-xorg \ + xf86-input-evdev \ + xf86-input-mouse \ + xf86-video-fbdev \ + xf86-input-keyboard" + +MACHINE_EXTRA_RRECOMMENDS = " kernel-modules kernel-devicetree" + +EXTRA_IMAGEDEPENDS += "u-boot" + +DEFAULTTUNE ?= "cortexa8hf-neon" +include conf/machine/include/tune-cortexa8.inc + +IMAGE_FSTYPES += "tar.bz2 jffs2" +EXTRA_IMAGECMD_jffs2 = "-lnp " + +SERIAL_CONSOLE = "115200 ttyO0" + +PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto" +PREFERRED_VERSION_linux-yocto ?= "4.4%" + +KERNEL_IMAGETYPE = "zImage" +KERNEL_DEVICETREE = "am335x-bone.dtb am335x-boneblack.dtb" +KERNEL_EXTRA_ARGS += "LOADADDR=${UBOOT_ENTRYPOINT}" + +SPL_BINARY = "MLO" +UBOOT_SUFFIX = "img" +UBOOT_MACHINE = "am335x_evm_config" +UBOOT_ENTRYPOINT = "0x80008000" +UBOOT_LOADADDRESS = "0x80008000" + +MACHINE_FEATURES = "usbgadget usbhost vfat alsa" + +IMAGE_BOOT_FILES ?= "u-boot.${UBOOT_SUFFIX} MLO" diff --git a/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/edgerouter.conf b/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/edgerouter.conf new file mode 100644 index 000000000..6343dfc38 --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/edgerouter.conf @@ -0,0 +1,22 @@ +#@TYPE: Machine +#@NAME: Edgerouter +#@DESCRIPTION: Edgerouter + +require conf/machine/include/tune-mips64.inc + +MACHINE_FEATURES = "pci ext2 ext3 serial" + +KERNEL_IMAGETYPE = "vmlinux" +KERNEL_ALT_IMAGETYPE = "vmlinux.bin" +KERNEL_IMAGE_STRIP_EXTRA_SECTIONS = ".comment" + +PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto" +PREFERRED_VERSION_linux-yocto ?= "4.4%" + +SERIAL_CONSOLE = "115200 ttyS0" +USE_VT ?= "0" + +MACHINE_EXTRA_RRECOMMENDS = " kernel-modules" + +IMAGE_FSTYPES ?= "jffs2 tar.bz2" +JFFS2_ERASEBLOCK = "0x10000" diff --git a/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/genericx86-64.conf b/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/genericx86-64.conf new file mode 100644 index 000000000..f76e35af6 --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/genericx86-64.conf @@ -0,0 +1,8 @@ +#@TYPE: Machine +#@NAME: Generic X86_64. + +#@DESCRIPTION: Machine configuration for generic X86_64 (64-bit) PCs and servers. Supports a moderately wide range of drivers that should boot and be usable on "typical" hardware. + +DEFAULTTUNE ?= "core2-64" +require conf/machine/include/tune-core2.inc +require conf/machine/include/genericx86-common.inc diff --git a/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/genericx86.conf b/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/genericx86.conf new file mode 100644 index 000000000..798b62ec2 --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/genericx86.conf @@ -0,0 +1,10 @@ +#@TYPE: Machine +#@NAME: Generic X86. + +#@DESCRIPTION: Machine configuration for generic X86 (32-bit) PCs. Supports a moderately wide range of drivers that should boot and be usable on "typical" hardware. + +DEFAULTTUNE ?= "core2-32" +require conf/machine/include/tune-core2.inc +require conf/machine/include/genericx86-common.inc + +MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "gma500-gfx-check" diff --git a/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/include/genericx86-common.inc b/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/include/genericx86-common.inc new file mode 100644 index 000000000..16b689de0 --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/include/genericx86-common.inc @@ -0,0 +1,20 @@ +include conf/machine/include/x86-base.inc +MACHINE_FEATURES += "wifi efi pcbios" + +PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto" +PREFERRED_VERSION_linux-yocto ?= "4.4%" +PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg" +XSERVER ?= "${XSERVER_X86_BASE} \ + ${XSERVER_X86_EXT} \ + ${XSERVER_X86_I915} \ + ${XSERVER_X86_I965} \ + ${XSERVER_X86_FBDEV} \ + ${XSERVER_X86_VESA} \ + ${XSERVER_X86_MODESETTING} \ + " + +MACHINE_EXTRA_RRECOMMENDS += "linux-firmware eee-acpi-scripts" + +GLIBC_ADDONS = "nptl" + +EXTRA_OECONF_append_pn-matchbox-panel-2 = " --with-battery=acpi" diff --git a/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/mpc8315e-rdb.conf b/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/mpc8315e-rdb.conf new file mode 100644 index 000000000..f3ad12d98 --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/conf/machine/mpc8315e-rdb.conf @@ -0,0 +1,33 @@ +#@TYPE: Machine +#@DESCRIPTION: Machine configuration for running + +TARGET_FPU = "" + +require conf/machine/include/tune-ppce300c3.inc + +KERNEL_IMAGETYPE = "uImage" + +EXTRA_IMAGEDEPENDS += "u-boot" +UBOOT_MACHINE_mpc8315e-rdb = "MPC8315ERDB_config" + +SERIAL_CONSOLE = "115200 ttyS0" + +MACHINE_FEATURES = "keyboard pci ext2 ext3 serial" + +PREFERRED_VERSION_linux-yocto ?= "4.4%" +PREFERRED_PROVIDER_virtual/kernel = "linux-yocto" + +PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg" +XSERVER ?= "xserver-xorg \ + xf86-input-evdev \ + xf86-video-fbdev" + +PREFERRED_VERSION_u-boot ?= "v2013.07%" +UBOOT_ENTRYPOINT = "0x00000000" + +KERNEL_DEVICETREE = "mpc8315erdb.dtb" + +MACHINE_EXTRA_RRECOMMENDS = " kernel-modules" + +IMAGE_FSTYPES ?= "jffs2 tar.bz2" +JFFS2_ERASEBLOCK = "0x4000" diff --git a/import-layers/yocto-poky/meta-yocto-bsp/lib/oeqa/controllers/__init__.py b/import-layers/yocto-poky/meta-yocto-bsp/lib/oeqa/controllers/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/lib/oeqa/controllers/__init__.py diff --git a/import-layers/yocto-poky/meta-yocto-bsp/lib/oeqa/controllers/beaglebonetarget.py b/import-layers/yocto-poky/meta-yocto-bsp/lib/oeqa/controllers/beaglebonetarget.py new file mode 100644 index 000000000..0f1aeb398 --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/lib/oeqa/controllers/beaglebonetarget.py @@ -0,0 +1,98 @@ +# Copyright (C) 2014 Intel Corporation +# +# Released under the MIT license (see COPYING.MIT) + +# This module adds support to testimage.bbclass to deploy images and run +# tests on a BeagleBone (original "white" or Black models). The device must +# be set up as per README.hardware and the master image should be deployed +# onto the card so that it boots into it by default. For booting into the +# image under test we interact with u-boot over serial, so for the +# BeagleBone Black you will need an additional TTL serial cable since a +# serial interface isn't automatically provided over the USB connection as +# it is on the original BeagleBone ("white") version. The separate ext3 +# partition that will contain the image to be tested must be labelled +# "testrootfs" so that the deployment code below can find it. +# +# NOTE: for the BeagleBone "white" (original version) you may need to use +# a script which handles the serial device disappearing on power down, such +# as scripts/contrib/serdevtry in OE-Core. + +import os +import bb +import time +import subprocess +import sys +import pexpect + +import oeqa.utils.sshcontrol as sshcontrol +from oeqa.controllers.masterimage import MasterImageHardwareTarget + + +class BeagleBoneTarget(MasterImageHardwareTarget): + + dtbs = {'uImage-am335x-bone.dtb': 'am335x-bone.dtb', 'uImage-am335x-boneblack.dtb': 'am335x-boneblack.dtb'} + + @classmethod + def get_extra_files(self): + return list(self.dtbs.keys()) + + def __init__(self, d): + super(BeagleBoneTarget, self).__init__(d) + + self.image_fstype = self.get_image_fstype(d) + self.deploy_cmds = [ + 'mkdir -p /mnt/testrootfs', + 'mount -L testrootfs /mnt/testrootfs', + 'rm -rf /mnt/testrootfs/*', + 'tar xvf ~/test-rootfs.%s -C /mnt/testrootfs' % self.image_fstype, + '[ -e /mnt/testrootfs/boot/uImage ] || [ -L /mnt/testrootfs/boot/uImage ] || cp ~/test-kernel /mnt/testrootfs/boot/uImage', + ] + + for _, dtbfn in self.dtbs.iteritems(): + # Kernel and dtb files may not be in the image, so copy them if not + self.deploy_cmds.append('[ -e /mnt/testrootfs/boot/{0} ] || cp ~/{0} /mnt/testrootfs/boot/'.format(dtbfn)) + + if not self.serialcontrol_cmd: + bb.fatal("This TEST_TARGET needs a TEST_SERIALCONTROL_CMD defined in local.conf.") + + + def _deploy(self): + self.master.run("umount /boot; umount /mnt/testrootfs;") + self.master.ignore_status = False + # Kernel and dtb files may not be in the image, so copy them just in case + self.master.copy_to(self.kernel, "~/test-kernel") + kernelpath = os.path.dirname(self.kernel) + for dtborig, dtbfn in self.dtbs.iteritems(): + dtbfile = os.path.join(kernelpath, dtborig) + if os.path.exists(dtbfile): + self.master.copy_to(dtbfile, "~/%s" % dtbfn) + self.master.copy_to(self.rootfs, "~/test-rootfs.%s" % self.image_fstype) + for cmd in self.deploy_cmds: + self.master.run(cmd) + + def _start(self, params=None): + self.power_cycle(self.master) + try: + serialconn = pexpect.spawn(self.serialcontrol_cmd, env=self.origenv, logfile=sys.stdout) + # We'd wait for "U-Boot" here but sometimes we connect too late on BeagleBone white to see it + serialconn.expect("NAND:") + serialconn.expect("MMC:") + serialconn.sendline("a") + serialconn.expect("U-Boot#") + serialconn.sendline("setenv bootpart 0:3") + serialconn.expect("U-Boot#") + serialconn.sendline("setenv mmcroot /dev/mmcblk0p3 ro") + serialconn.expect("U-Boot#") + serialconn.sendline("boot") + serialconn.expect("login:", timeout=120) + serialconn.close() + except pexpect.ExceptionPexpect as e: + bb.fatal('Serial interaction failed: %s' % str(e)) + + def _wait_until_booted(self): + try: + serialconn = pexpect.spawn(self.serialcontrol_cmd, env=self.origenv, logfile=sys.stdout) + serialconn.expect("login:", timeout=120) + serialconn.close() + except pexpect.ExceptionPexpect as e: + bb.fatal('Serial interaction failed: %s' % str(e)) diff --git a/import-layers/yocto-poky/meta-yocto-bsp/lib/oeqa/controllers/edgeroutertarget.py b/import-layers/yocto-poky/meta-yocto-bsp/lib/oeqa/controllers/edgeroutertarget.py new file mode 100644 index 000000000..b3338ca85 --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/lib/oeqa/controllers/edgeroutertarget.py @@ -0,0 +1,90 @@ +# Copyright (C) 2014 Intel Corporation +# +# Released under the MIT license (see COPYING.MIT) + +# This module adds support to testimage.bbclass to deploy images and run +# tests on a Ubiquiti Networks EdgeRouter Lite. The device must be set up +# to boot into the master image already - the easiest way to do that is as +# follows: +# +# 1. Take out the internal USB drive and plug it into your PC +# 2. Repartition the USB drive so that you have three partitions in this +# order: +# 1: vfat, labelled "boot" (it will need to be formatted with mkfs.vfat +# for this to be possible, since FAT partitions formatted under +# DOS/Windows will only support uppercase labels) +# 2: ext3 (for master image) labelled "testmaster" +# 3: ext3 (for image under test) labelled "testrootfs" +# 3. Copy the kernel to be used by the master image to the FAT partition +# (it should be named "vmlinux.64" with the factory u-boot configuration) +# 4. Install the master image onto the "testmaster" ext3 partition. If +# you do this by just extracting the contents of an image onto the +# partition, you will also likely need to create the master image marker +# file /etc/masterimage within this partition so that we can tell when +# we're booted into it that it is the master image. +# 5. Put the USB drive back into the device, and ensure the console port +# and first ethernet port are connected before powering on +# +# TEST_SERIALCONTROL_CMD will need to be set in local.conf so that we can +# interact with u-boot over the serial console port. + +import os +import bb +import time +import subprocess +import sys +import pexpect + +import oeqa.utils.sshcontrol as sshcontrol +from oeqa.controllers.masterimage import MasterImageHardwareTarget + + +class EdgeRouterTarget(MasterImageHardwareTarget): + + def __init__(self, d): + super(EdgeRouterTarget, self).__init__(d) + + self.image_fstype = self.get_image_fstype(d) + self.deploy_cmds = [ + 'mount -L boot /boot', + 'mkdir -p /mnt/testrootfs', + 'mount -L testrootfs /mnt/testrootfs', + 'cp ~/test-kernel /boot', + 'rm -rf /mnt/testrootfs/*', + 'tar xvf ~/test-rootfs.%s -C /mnt/testrootfs' % self.image_fstype + ] + if not self.serialcontrol_cmd: + bb.fatal("This TEST_TARGET needs a TEST_SERIALCONTROL_CMD defined in local.conf.") + + + def _deploy(self): + self.master.run("umount /mnt/testrootfs;") + self.master.ignore_status = False + self.master.copy_to(self.kernel, "~/test-kernel") + self.master.copy_to(self.rootfs, "~/test-rootfs.%s" % self.image_fstype) + for cmd in self.deploy_cmds: + self.master.run(cmd) + + def _start(self, params=None): + self.power_cycle(self.master) + try: + serialconn = pexpect.spawn(self.serialcontrol_cmd, env=self.origenv, logfile=sys.stdout) + serialconn.expect("U-Boot") + serialconn.sendline("a") + serialconn.expect("Octeon ubnt_e100#") + serialconn.sendline("fatload usb 0:1 $loadaddr test-kernel") + serialconn.expect(" bytes read") + serialconn.expect("Octeon ubnt_e100#") + serialconn.sendline("bootoctlinux $loadaddr coremask=0x3 root=/dev/sda3 rw rootwait mtdparts=phys_mapped_flash:512k(boot0),512k(boot1),64k@3072k(eeprom)") + serialconn.expect("login:", timeout=120) + serialconn.close() + except pexpect.ExceptionPexpect as e: + bb.fatal('Serial interaction failed: %s' % str(e)) + + def _wait_until_booted(self): + try: + serialconn = pexpect.spawn(self.serialcontrol_cmd, env=self.origenv, logfile=sys.stdout) + serialconn.expect("login:", timeout=120) + serialconn.close() + except pexpect.ExceptionPexpect as e: + bb.fatal('Serial interaction failed: %s' % str(e)) diff --git a/import-layers/yocto-poky/meta-yocto-bsp/lib/oeqa/controllers/grubtarget.py b/import-layers/yocto-poky/meta-yocto-bsp/lib/oeqa/controllers/grubtarget.py new file mode 100644 index 000000000..7bc807d2b --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/lib/oeqa/controllers/grubtarget.py @@ -0,0 +1,71 @@ +# Copyright (C) 2014 Intel Corporation +# +# Released under the MIT license (see COPYING.MIT) + +# This module adds support to testimage.bbclass to deploy images and run +# tests on a Generic PC that boots using grub bootloader. The device must +# be set up as per README.hardware and the master image should be deployed +# onto the harddisk so that it boots into it by default.For booting into the +# image under test we interact with grub over serial, so for the +# Generic PC you will need an additional serial cable and device under test +# needs to have a serial interface. The separate ext3 +# partition that will contain the image to be tested must be labelled +# "testrootfs" so that the deployment code below can find it. + +import os +import bb +import time +import subprocess +import sys +import pexpect + +import oeqa.utils.sshcontrol as sshcontrol +from oeqa.controllers.masterimage import MasterImageHardwareTarget + +class GrubTarget(MasterImageHardwareTarget): + + def __init__(self, d): + super(GrubTarget, self).__init__(d) + self.deploy_cmds = [ + 'mount -L boot /boot', + 'mkdir -p /mnt/testrootfs', + 'mount -L testrootfs /mnt/testrootfs', + 'cp ~/test-kernel /boot', + 'rm -rf /mnt/testrootfs/*', + 'tar xvf ~/test-rootfs.%s -C /mnt/testrootfs' % self.image_fstype, + ] + + if not self.serialcontrol_cmd: + bb.fatal("This TEST_TARGET needs a TEST_SERIALCONTROL_CMD defined in local.conf.") + + + def _deploy(self): + # make sure these aren't mounted + self.master.run("umount /boot; umount /mnt/testrootfs;") + self.master.ignore_status = False + # Kernel files may not be in the image, so copy them just in case + self.master.copy_to(self.rootfs, "~/test-rootfs." + self.image_fstype) + self.master.copy_to(self.kernel, "~/test-kernel") + for cmd in self.deploy_cmds: + self.master.run(cmd) + + def _start(self, params=None): + self.power_cycle(self.master) + try: + serialconn = pexpect.spawn(self.serialcontrol_cmd, env=self.origenv, logfile=sys.stdout) + serialconn.expect("GNU GRUB version 2.00") + serialconn.expect("Linux") + serialconn.sendline("x") + serialconn.expect("login:", timeout=120) + serialconn.close() + except pexpect.ExceptionPexpect as e: + bb.fatal('Serial interaction failed: %s' % str(e)) + + def _wait_until_booted(self): + try: + serialconn = pexpect.spawn(self.serialcontrol_cmd, env=self.origenv, logfile=sys.stdout) + serialconn.expect("login:", timeout=120) + serialconn.close() + except pexpect.ExceptionPexpect as e: + bb.fatal('Serial interaction failed: %s' % str(e)) + diff --git a/import-layers/yocto-poky/meta-yocto-bsp/lib/oeqa/selftest/__init__.py b/import-layers/yocto-poky/meta-yocto-bsp/lib/oeqa/selftest/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/lib/oeqa/selftest/__init__.py diff --git a/import-layers/yocto-poky/meta-yocto-bsp/lib/oeqa/selftest/gummiboot.py b/import-layers/yocto-poky/meta-yocto-bsp/lib/oeqa/selftest/gummiboot.py new file mode 100644 index 000000000..00aa36f60 --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/lib/oeqa/selftest/gummiboot.py @@ -0,0 +1,83 @@ +from oeqa.selftest.base import oeSelfTest +from oeqa.utils.commands import runCmd, bitbake, get_bb_var, runqemu +from oeqa.utils.decorators import testcase +import re +import os +import sys +import logging + + +class Gummiboot(oeSelfTest): + + def _common_setup(self): + """ + Common setup for test cases: 1101, 1103 + """ + + # Set EFI_PROVIDER = "gummiboot" and MACHINE = "genericx86-64" in conf/local.conf + features = 'EFI_PROVIDER = "gummiboot"\n' + features += 'MACHINE = "genericx86-64"' + self.append_config(features) + + def _common_build(self): + """ + Common build for test cases: 1101, 1103 + """ + + # Build a genericx86-64/efi gummiboot image + bitbake('syslinux syslinux-native parted-native dosfstools-native mtools-native core-image-minimal') + + + @testcase(1101) + def test_efi_gummiboot_images_can_be_built(self): + """ + Summary: Check if efi/gummiboot images can be built + Expected: 1. File gummibootx64.efi should be available in build/tmp/deploy/images/genericx86-64 + 2. Efi/gummiboot images can be built + Product: oe-core + Author: Ionut Chisanovici <ionutx.chisanovici@intel.com> + AutomatedBy: Daniel Istrate <daniel.alexandrux.istrate@intel.com> + """ + + # We'd use DEPLOY_DIR_IMAGE here, except that we need its value for + # MACHINE="genericx86-64 which is probably not the one configured + gummibootfile = os.path.join(get_bb_var('DEPLOY_DIR'), 'images', 'genericx86-64', 'gummibootx64.efi') + + self._common_setup() + + # Ensure we're actually testing that this gets built and not that + # it was around from an earlier build + bitbake('-c cleansstate gummiboot') + runCmd('rm -f %s' % gummibootfile) + + self._common_build() + + found = os.path.isfile(gummibootfile) + self.assertTrue(found, 'Gummiboot file %s not found' % gummibootfile) + + @testcase(1103) + def test_wic_command_can_create_efi_gummiboot_installation_images(self): + """ + Summary: Check that wic command can create efi/gummiboot installation images + Expected: A .direct file in folder /var/tmp/wic/ must be created. + Product: oe-core + Author: Ionut Chisanovici <ionutx.chisanovici@intel.com> + AutomatedBy: Daniel Istrate <daniel.alexandrux.istrate@intel.com> + """ + + self._common_setup() + self._common_build() + + # Create efi/gummiboot installation images + wic_create_cmd = 'wic create mkgummidisk -e core-image-minimal' + result = runCmd(wic_create_cmd) + + # Find file written by wic from output + res = re.search('(/var/tmp/wic/.*\.direct)', result.output) + if res: + direct_file = res.group(1) + # Check it actually exists + if not os.path.exists(direct_file): + self.fail('wic reported direct file "%s" does not exist; wic output:\n%s' % (direct_file, result.output)) + else: + self.fail('No .direct file reported in wic output:\n%s' % result.output) diff --git a/import-layers/yocto-poky/meta-yocto-bsp/lib/oeqa/yoctobsp.py b/import-layers/yocto-poky/meta-yocto-bsp/lib/oeqa/yoctobsp.py new file mode 100644 index 000000000..4c539a1f3 --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/lib/oeqa/yoctobsp.py @@ -0,0 +1,39 @@ +import unittest +import os +import logging +import tempfile +import shutil + +from oeqa.selftest.base import oeSelfTest +from oeqa.utils.commands import runCmd +from oeqa.utils.decorators import skipUnlessPassed + +class YoctoBSP(oeSelfTest): + + @classmethod + def setUpClass(self): + result = runCmd("yocto-bsp list karch") + self.karchs = [karch.lstrip() for karch in result.output.splitlines()][1:] + + def test_yoctobsp_listproperties(self): + for karch in self.karchs: + result = runCmd("yocto-bsp list %s properties" % karch) + self.assertEqual(0, result.status, msg="Properties from %s architecture could not be listed" % karch) + + def test_yoctobsp_create(self): + # Generate a temporal file and folders for each karch + json = "{\"use_default_kernel\":\"yes\"}\n" + fd = tempfile.NamedTemporaryFile(delete=False) + fd.write(json) + fd.close() + tmpfolders = dict([(karch, tempfile.mkdtemp()) for karch in self.karchs]) + # Create BSP + for karch in self.karchs: + result = runCmd("yocto-bsp create test %s -o %s -i %s" % (karch, "%s/unitest" % tmpfolders[karch], fd.name)) + self.assertEqual(0, result.status, msg="Could not create a BSP with architecture %s using %s " % (karch, fd.name)) + # Remove tmp file/folders + os.unlink(fd.name) + self.assertFalse(os.path.exists(fd.name), msg = "Temporal file %s could not be removed" % fd.name) + for tree in tmpfolders.values(): + shutil.rmtree(tree) + self.assertFalse(os.path.exists(tree), msg = "Temporal folder %s could not be removed" % tree) diff --git a/import-layers/yocto-poky/meta-yocto-bsp/recipes-bsp/formfactor/formfactor/beaglebone/machconfig b/import-layers/yocto-poky/meta-yocto-bsp/recipes-bsp/formfactor/formfactor/beaglebone/machconfig new file mode 100644 index 000000000..ffce01227 --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/recipes-bsp/formfactor/formfactor/beaglebone/machconfig @@ -0,0 +1,3 @@ +# Assume a USB mouse and keyboard are connected +HAVE_TOUCHSCREEN=0 +HAVE_KEYBOARD=1 diff --git a/import-layers/yocto-poky/meta-yocto-bsp/recipes-bsp/formfactor/formfactor/genericx86-64/machconfig b/import-layers/yocto-poky/meta-yocto-bsp/recipes-bsp/formfactor/formfactor/genericx86-64/machconfig new file mode 100644 index 000000000..a81a23bf5 --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/recipes-bsp/formfactor/formfactor/genericx86-64/machconfig @@ -0,0 +1,6 @@ +HAVE_TOUCHSCREEN=0 +HAVE_KEYBOARD=1 + +DISPLAY_CAN_ROTATE=0 +DISPLAY_ORIENTATION=0 +DISPLAY_DPI=133 diff --git a/import-layers/yocto-poky/meta-yocto-bsp/recipes-bsp/formfactor/formfactor/genericx86/machconfig b/import-layers/yocto-poky/meta-yocto-bsp/recipes-bsp/formfactor/formfactor/genericx86/machconfig new file mode 100644 index 000000000..a81a23bf5 --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/recipes-bsp/formfactor/formfactor/genericx86/machconfig @@ -0,0 +1,6 @@ +HAVE_TOUCHSCREEN=0 +HAVE_KEYBOARD=1 + +DISPLAY_CAN_ROTATE=0 +DISPLAY_ORIENTATION=0 +DISPLAY_DPI=133 diff --git a/import-layers/yocto-poky/meta-yocto-bsp/recipes-bsp/formfactor/formfactor_0.0.bbappend b/import-layers/yocto-poky/meta-yocto-bsp/recipes-bsp/formfactor/formfactor_0.0.bbappend new file mode 100644 index 000000000..72d991c7e --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/recipes-bsp/formfactor/formfactor_0.0.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" diff --git a/import-layers/yocto-poky/meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.conf b/import-layers/yocto-poky/meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.conf new file mode 100644 index 000000000..74d33c871 --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.conf @@ -0,0 +1,2 @@ +# Mimic modprobe's install funcitonality with busybox's modprobe +install gma500_gfx dmesg | grep gma500_gfx_checked || { /etc/modprobe.d/gma500-gfx-check.sh || modprobe gma500_gfx; } diff --git a/import-layers/yocto-poky/meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.sh b/import-layers/yocto-poky/meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.sh new file mode 100644 index 000000000..75cda99f5 --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# Check for devices we wish to avoid gma500_gfx for +DEVICES="0x8119 0x4108" + +# Checked flag to avoid infinite modprobe +echo "gma500_gfx_checked" >> /dev/kmsg; + +for DEVICE in $DEVICES; do + if udevadm trigger --subsystem-match=pci --verbose --attr-match=device=$DEVICE | grep "pci" >> /dev/null ; then + echo "Found $DEVICE, avoiding gma500_gfx module" >> /dev/kmsg; + exit 0 + fi +done +exit 1 diff --git a/import-layers/yocto-poky/meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bb b/import-layers/yocto-poky/meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bb new file mode 100644 index 000000000..00680de89 --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bb @@ -0,0 +1,18 @@ +SUMMARY = "Intel gma500_gfx fix for certain hardware" +DESCRIPTION = "Avoid inserting gma500_gfx module for certain hardware devices." +LICENSE="GPLv2" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" + +SRC_URI = "file://gma500-gfx-check.conf \ + file://gma500-gfx-check.sh " + +do_install(){ + install -d ${D}${sysconfdir}/modprobe.d/ + install -m 755 ${WORKDIR}/gma500-gfx-check.sh ${D}${sysconfdir}/modprobe.d/gma500-gfx-check.sh + install -m 644 ${WORKDIR}/gma500-gfx-check.conf ${D}${sysconfdir}/modprobe.d/gma500-gfx-check.conf +} + +FILES_${PN}="${sysconfdir}/modprobe.d/gma500-gfx-check.conf \ + ${sysconfdir}/modprobe.d/gma500-gfx-check.sh" + +COMPATIBLE_MACHINE = "genericx86" diff --git a/import-layers/yocto-poky/meta-yocto-bsp/recipes-core/packagegroups/packagegroup-core-tools-profile.bbappend b/import-layers/yocto-poky/meta-yocto-bsp/recipes-core/packagegroups/packagegroup-core-tools-profile.bbappend new file mode 100644 index 000000000..f86595c00 --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/recipes-core/packagegroups/packagegroup-core-tools-profile.bbappend @@ -0,0 +1,2 @@ +RDEPENDS_${PN}_append_genericx86 = " lttng-ust systemtap" + diff --git a/import-layers/yocto-poky/meta-yocto-bsp/recipes-core/uclibc/uclibc/genericx86-64/uClibc.machine b/import-layers/yocto-poky/meta-yocto-bsp/recipes-core/uclibc/uclibc/genericx86-64/uClibc.machine new file mode 100644 index 000000000..305dc64de --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/recipes-core/uclibc/uclibc/genericx86-64/uClibc.machine @@ -0,0 +1,69 @@ +# +# Automatically generated make config: don't edit +# Fri Nov 23 15:49:33 2007 +# +# TARGET_alpha is not set +# TARGET_arm is not set +# TARGET_bfin is not set +# TARGET_cris is not set +# TARGET_e1 is not set +# TARGET_frv is not set +# TARGET_h8300 is not set +# TARGET_hppa is not set +# TARGET_i386=y +# TARGET_i960 is not set +# TARGET_ia64 is not set +# TARGET_m68k is not set +# TARGET_microblaze is not set +# TARGET_mips is not set +# TARGET_nios is not set +# TARGET_nios2 is not set +# TARGET_powerpc is not set +# TARGET_sh is not set +# TARGET_sh64 is not set +# TARGET_sparc is not set +# TARGET_v850 is not set +# TARGET_vax is not set +TARGET_x86_64=y + +# +# Target Architecture Features and Options +# +TARGET_ARCH="x86_64" +FORCE_OPTIONS_FOR_ARCH=y +# CONFIG_GENERIC_386 is not set +# CONFIG_386 is not set +# CONFIG_486 is not set +# CONFIG_586 is not set +# CONFIG_586MMX is not set +# CONFIG_686 is not set +# CONFIG_PENTIUMII is not set +# CONFIG_PENTIUMIII is not set +# CONFIG_PENTIUM4 is not set +# CONFIG_K6 is not set +# CONFIG_K7 is not set +# CONFIG_ELAN is not set +# CONFIG_CRUSOE is not set +# CONFIG_WINCHIPC6 is not set +# CONFIG_WINCHIP2 is not set +# CONFIG_CYRIXIII is not set +# CONFIG_NEHEMIAH is not set +TARGET_SUBARCH="" + +# +# Using ELF file format +# +ARCH_LITTLE_ENDIAN=y + +# +# Using Little Endian +# +ARCH_HAS_MMU=y +ARCH_USE_MMU=y +UCLIBC_HAS_FLOATS=y +UCLIBC_HAS_FPU=y +DO_C99_MATH=y +KERNEL_HEADERS="/usr/include" +HAVE_DOT_CONFIG=y + +UCLIBC_HAS_FENV=y diff --git a/import-layers/yocto-poky/meta-yocto-bsp/recipes-core/uclibc/uclibc/genericx86/uClibc.machine b/import-layers/yocto-poky/meta-yocto-bsp/recipes-core/uclibc/uclibc/genericx86/uClibc.machine new file mode 100644 index 000000000..5df15f94c --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/recipes-core/uclibc/uclibc/genericx86/uClibc.machine @@ -0,0 +1,69 @@ +# +# Automatically generated make config: don't edit +# Fri Nov 23 15:49:33 2007 +# +# TARGET_alpha is not set +# TARGET_arm is not set +# TARGET_bfin is not set +# TARGET_cris is not set +# TARGET_e1 is not set +# TARGET_frv is not set +# TARGET_h8300 is not set +# TARGET_hppa is not set +TARGET_i386=y +# TARGET_i960 is not set +# TARGET_ia64 is not set +# TARGET_m68k is not set +# TARGET_microblaze is not set +# TARGET_mips is not set +# TARGET_nios is not set +# TARGET_nios2 is not set +# TARGET_powerpc is not set +# TARGET_sh is not set +# TARGET_sh64 is not set +# TARGET_sparc is not set +# TARGET_v850 is not set +# TARGET_vax is not set +# TARGET_x86_64 is not set + +# +# Target Architecture Features and Options +# +TARGET_ARCH="i386" +FORCE_OPTIONS_FOR_ARCH=y +CONFIG_GENERIC_386=y +# CONFIG_386 is not set +# CONFIG_486 is not set +# CONFIG_586 is not set +# CONFIG_586MMX is not set +# CONFIG_686 is not set +# CONFIG_PENTIUMII is not set +# CONFIG_PENTIUMIII is not set +# CONFIG_PENTIUM4 is not set +# CONFIG_K6 is not set +# CONFIG_K7 is not set +# CONFIG_ELAN is not set +# CONFIG_CRUSOE is not set +# CONFIG_WINCHIPC6 is not set +# CONFIG_WINCHIP2 is not set +# CONFIG_CYRIXIII is not set +# CONFIG_NEHEMIAH is not set +TARGET_SUBARCH="" + +# +# Using ELF file format +# +ARCH_LITTLE_ENDIAN=y + +# +# Using Little Endian +# +ARCH_HAS_MMU=y +ARCH_USE_MMU=y +UCLIBC_HAS_FLOATS=y +UCLIBC_HAS_FPU=y +DO_C99_MATH=y +KERNEL_HEADERS="/usr/include" +HAVE_DOT_CONFIG=y + +UCLIBC_HAS_FENV=y diff --git a/import-layers/yocto-poky/meta-yocto-bsp/recipes-core/uclibc/uclibc_git.bbappend b/import-layers/yocto-poky/meta-yocto-bsp/recipes-core/uclibc/uclibc_git.bbappend new file mode 100644 index 000000000..72d991c7e --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/recipes-core/uclibc/uclibc_git.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" diff --git a/import-layers/yocto-poky/meta-yocto-bsp/recipes-graphics/xorg-xserver/xserver-xf86-config/genericx86-64/xorg.conf b/import-layers/yocto-poky/meta-yocto-bsp/recipes-graphics/xorg-xserver/xserver-xf86-config/genericx86-64/xorg.conf new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/recipes-graphics/xorg-xserver/xserver-xf86-config/genericx86-64/xorg.conf diff --git a/import-layers/yocto-poky/meta-yocto-bsp/recipes-graphics/xorg-xserver/xserver-xf86-config/genericx86/xorg.conf b/import-layers/yocto-poky/meta-yocto-bsp/recipes-graphics/xorg-xserver/xserver-xf86-config/genericx86/xorg.conf new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/recipes-graphics/xorg-xserver/xserver-xf86-config/genericx86/xorg.conf diff --git a/import-layers/yocto-poky/meta-yocto-bsp/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend b/import-layers/yocto-poky/meta-yocto-bsp/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend new file mode 100644 index 000000000..72d991c7e --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" diff --git a/import-layers/yocto-poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.1.bbappend b/import-layers/yocto-poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.1.bbappend new file mode 100644 index 000000000..b20a18bfe --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.1.bbappend @@ -0,0 +1,23 @@ +KBRANCH_genericx86 = "standard/base" +KBRANCH_genericx86-64 = "standard/base" +KBRANCH_edgerouter = "standard/edgerouter" +KBRANCH_beaglebone = "standard/beaglebone" +KBRANCH_mpc8315e-rdb = "standard/fsl-mpc8315e-rdb" + +KMACHINE_genericx86 ?= "common-pc" +KMACHINE_genericx86-64 ?= "common-pc-64" + +SRCREV_machine_genericx86 ?= "304caa9480f19875e717faf3cad8cb7ecd758733" +SRCREV_machine_genericx86-64 ?= "304caa9480f19875e717faf3cad8cb7ecd758733" +SRCREV_machine_edgerouter ?= "79a31b9d23db126f8a6be3eb88fd683056a213f1" +SRCREV_machine_beaglebone ?= "efb6ffb2ca96a364f916c9890ad023fc595e0e6e" +SRCREV_machine_mpc8315e-rdb ?= "79a31b9d23db126f8a6be3eb88fd683056a213f1" + +COMPATIBLE_MACHINE_genericx86 = "genericx86" +COMPATIBLE_MACHINE_genericx86-64 = "genericx86-64" +COMPATIBLE_MACHINE_edgerouter = "edgerouter" +COMPATIBLE_MACHINE_beaglebone = "beaglebone" +COMPATIBLE_MACHINE_mpc8315e-rdb = "mpc8315e-rdb" + +LINUX_VERSION_genericx86 = "4.1.18" +LINUX_VERSION_genericx86-64 = "4.1.18" diff --git a/import-layers/yocto-poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.4.bbappend b/import-layers/yocto-poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.4.bbappend new file mode 100644 index 000000000..e31b0c8f2 --- /dev/null +++ b/import-layers/yocto-poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.4.bbappend @@ -0,0 +1,23 @@ +KBRANCH_genericx86 = "standard/base" +KBRANCH_genericx86-64 = "standard/base" + +KMACHINE_genericx86 ?= "common-pc" +KMACHINE_genericx86-64 ?= "common-pc-64" +KBRANCH_edgerouter = "standard/edgerouter" +KBRANCH_beaglebone = "standard/beaglebone" +KBRANCH_mpc8315e-rdb = "standard/fsl-mpc8315e-rdb" + +SRCREV_machine_genericx86 ?= "3d2455f9da30f923c6bd69014fad4cc4ea738be6" +SRCREV_machine_genericx86-64 ?= "3d2455f9da30f923c6bd69014fad4cc4ea738be6" +SRCREV_machine_edgerouter ?= "ff4c4ef15b51f45b9106d71bf1f62fe7c02e63c2" +SRCREV_machine_beaglebone ?= "ff4c4ef15b51f45b9106d71bf1f62fe7c02e63c2" +SRCREV_machine_mpc8315e-rdb ?= "df00877ef9387b38b9601c82db57de2a1b23ce53" + +COMPATIBLE_MACHINE_genericx86 = "genericx86" +COMPATIBLE_MACHINE_genericx86-64 = "genericx86-64" +COMPATIBLE_MACHINE_edgerouter = "edgerouter" +COMPATIBLE_MACHINE_beaglebone = "beaglebone" +COMPATIBLE_MACHINE_mpc8315e-rdb = "mpc8315e-rdb" + +LINUX_VERSION_genericx86 = "4.4.3" +LINUX_VERSION_genericx86-64 = "4.4.3" |