Giter Site home page Giter Site logo

timesysgit / meta-timesys Goto Github PK

View Code? Open in Web Editor NEW
35.0 15.0 16.0 823 KB

Vulnerability management tool that provides Yocto SBOM generation and CVE Analysis of target images.

Home Page: https://www.timesys.com/vigiles/

Python 27.63% Shell 1.03% BitBake 71.34%
cve yocto-security security-vulnerability vigiles-cve-scanner linux-security yocto-linux-security cve-scanning yocto-cve-analysis yocto-sbom spdx-sbom

meta-timesys's Introduction

Timesys Vigiles

What is meta-timesys?

This Yocto layer provides scripts for image manifest generation used for security monitoring and notification as part of the Timesys Vigiles product offering.

What is Vigiles?

Vigiles is a vulnerability management tool that provides build-time Yocto CVE Analysis of target images. It does this by collecting metadata about packages to be installed and uploading it to be compared against the Timesys CVE database.A high-level overview of the detected vulnerabilities is returned and a full detailed analysis can be viewed online.

Register (free) and download the API key to access the full feature set based on Vigiles Basic, Plus or Prime: https://linuxlink.timesys.com/docs/wiki/engineering/LinuxLink_Key_File

Pre-Requisites

A BitBake build environment is required for the Vigiles CVE Scanner to evaluate the potential risk of a target system.

The fastest way to use the Vigiles CVE Scanner is to integrate it into your existing BSP (clone alongside other layers, add to bblayers.conf).

If you do not already have an environment configured, please use the following to boot-strap a minimal setup.

Review the Yocto system requirements here:

https://docs.yoctoproject.org/dev/ref-manual/system-requirements.html#system-requirements

Clone poky and meta-timesys

git clone git://git.yoctoproject.org/poky.git
git clone https://github.com/TimesysGit/meta-timesys.git

Activate yocto build environment (needed for manifest creation)

source poky/oe-init-build-env

Using Vigiles

Add meta-timesys to conf/bblayers.conf

Follow format of the file, just add meta-timesys after the default poky/meta, etc.

BBLAYERS += "${TOPDIR}/../meta-timesys"

Append vigiles to INHERIT in conf/local.conf

INHERIT += "vigiles"

Check an Image for CVEs

When you build any image, the Vigiles CVE Scanner will execute automatically:

bitbake core-image-minimal

Review the Output

An overview will be printed to the console after the check is complete and a persistent local summary will be created in the vigiles/<image name>/ directory for that build. A symlink is created to the latest report at vigiles/<image name>-report.txt:

$ readlink vigiles/core-image-minimal-report.txt
core-image-minimal/core-image-minimal-2019-06-07_19.22.40-report.txt

The output will differ based on whether you are running with a LinuxLink subscription or in Demo Mode.

Subscription Mode Console Output
Vigiles: Requesting image analysis from LinuxLink ...


-- Vigiles CVE Report --

	View detailed online report at:
	  https://linuxlink.timesys.com/cves/reports/ODUzOA.D9xLIQ.KKiK2E76n---q6_-KmJrsZ9ap9Y

	Unfixed: 62 (0 RFS, 60 Kernel, 2 Toolchain)
	Unfixed, Patch Available: 7 (2 RFS, 0 Kernel, 5 Toolchain)
	Fixed: 0 (0 RFS, 0 Kernel, 0 Toolchain)
	High CVSS: 30 (2 RFS, 24 Kernel, 4 Toolchain)

	Local summary written to:
	  vigiles/core-image-minimal/core-image-minimal-2019-06-07_19.22.40-report.txt
Demo Mode Console Output
-- Vigiles Demo Mode Notice --
	No API keyfile was found, or the contents were invalid.

	Please see this document for API key information:
	https://linuxlink.timesys.com/docs/wiki/engineering/LinuxLink_Key_File

	The script will continue in demo mode, which will link you to temporarily available online results only.
	You will need to login or register for a free account in order to see the report.

	For more information on the security notification service, please visit:
	https://www.timesys.com/security/vulnerability-patch-notification/

Vigiles: Requesting image analysis from LinuxLink ...


-- Vigiles CVE Report --

	Complete online report at:
	  https://linuxlink.timesys.com/cves/reports/ODUyMA.D9wwnQ.9MTUnSVk6Xi-Q1kO0ea--e4wVJ4
	  NOTE: Running in Demo Mode will cause this URL to expire after one day.

-- Vigiles CVE Overview --

	Unfixed: 62
	Unfixed, Patch Available: 7
	Fixed: 0
	CPU: 0


	Local summary written to:
	  vigiles/core-image-minimal/core-image-minimal-2019-06-07_17.29.31-report.txt

Interpreting the Results

Console Output

A CVE summary is printed in both Subscription and Demo modes and contains the following.

  • "Unfixed" CVEs are existing CVEs that have been reported against packages to be installed.

  • "Patch Available" CVEs have a fix available in the meta-timesys-security layer. If the layer is already included, then you may need to update your copy.

  • "Fixed" CVEs are those that originally existed in packages to be installed, but have been fixed/mitigated by subsequent patches.

  • "CPU" CVEs are filed against the hardware. They may be fixed or mitigated in other components such as the kernel or compiler.

  • "High CVSS" (Subscription Mode Only) CVEs are those that are of utmost priority and require immediate attention, based on their Common Vulnerability Scoring System (v3) ranking.

Additionally, in Subscription Mode, the distribution of the vulnerabilities across system components will be displayed.

Online Report

The Vigiles CVE online report specified in the output provides a dashboard interface for examining all known details about each CVE detected, including the affected version ranges, priority and existing mitigations.

Local Summary

In both operating modes, the local summary will include the console output as well as descriptive information about the report instance. In Subscription Mode, additional information is included about each CVE that the scan detects, as well as any fixes that have been applied. This is an example from the reports generated above.

-- Recipe CVEs --
        Recipe:  glibc
        Version: 2.28
        CVE ID:  CVE-2019-9192
        URL:     https://nvd.nist.gov/vuln/detail/CVE-2019-9192
        CVSSv3:  7.5
        Vector:  NETWORK
        Status:  Unfixed

        Recipe:  glibc
        Version: 2.28
        CVE ID:  CVE-2016-10739
        URL:     https://nvd.nist.gov/vuln/detail/CVE-2016-10739
        CVSSv3:  5.3
        Vector:  LOCAL
        Status:  Unfixed, Patch Available
        Patched in meta-timesys-security commit(s):
        * bfb9cf83582e4cffd6c9cdbadddc68302fa350cc

        Recipe:  linux-yocto
        Version: 4.18.27
        CVE ID:  CVE-2019-9162
        URL:     https://nvd.nist.gov/vuln/detail/CVE-2019-9162
        CVSSv3:  7.8
        Vector:  LOCAL
        Status:  Unfixed

CVE Manifest

The Vigiles CVE Scanner creates and sends a manifest describing your build to the LinuxLink Server. This manifest is located at

$ readlink vigiles/core-image-minimal-cve.json 
core-image-minimal/core-image-minimal-2019-09-09_23.08.28-cve.json

In the event that something goes wrong, or if the results seem incorrect, this file may offer insight as to why. It's important to include this file with any support request.

Advanced Usage

Custom Manifest and Report Names

By default, the Vigiles Manifest and CVE Report files are named after the base image that is built (from the Yocto variable "IMAGE_BASENAME"). This can be overridden with by setting the configuration variable "VIGILES_MANIFEST_NAME" in conf/local.conf:

VIGILES_MANIFEST_NAME = "Custom-Build-Name"

Instead of e.g.

./vigiles
├── core-image-minimal/
├── core-image-minimal-cve.json
└── core-image-minimal-report.txt

.. this will be the result:

./vigiles
├── Custom-Build-Name/
├── Custom-Build-Name-cve.json -> Custom-Build-Name/Custom-Build-Name-2020-11-25_20.28.09-cve.json
└── Custom-Build-Name-report.txt -> Custom-Build-Name/Custom-Build-Name-2020-11-25_20.28.09-report.txt

Vigiles Whitelist

"Whitelist" Recipes and CVEs are listed in the "VIGILES_WHITELIST" variable. They are NOT included in the report.

The Whitelist can be adjusted in conf/local.conf by appending VIGILES_WHITELIST:

VIGILES_WHITELIST += "\
	CVE-1234-ABCD \
"

Kernel Config Filter

The Vigiles CVE Scanner can be configured to upload a Linux Kernel .config file to LinuxLink along with the image manifest. This filter will reduce the number of kernel CVEs reported by removing those related to features which are not being built for your kernel. There are 2 ways to enable this feature -- Automatic Detection or Manual Specification

  • Automatic Detection

This will use the .config for the kernel specified in PREFERRED_PROVIDER_virtual/kernel once the yocto task do_configure is executed.

VIGILES_KERNEL_CONFIG = "auto"
  • Manual Specification

NOTE: This must be a full kernel config, not a defconfig!

VIGILES_KERNEL_CONFIG = "/projects/kernel/linux-4.14-ts+imx-1.0/.config"

U-Boot Config Filter

The Vigiles CVE Scanner can be configured to upload a U-Boot .config file to LinuxLink along with the image manifest. This filter will reduce the number of U-Boot CVEs reported by removing those related to features which are not being built for your U-Boot. There are 2 ways to enable this feature -- Automatic Detection or Manual Specification

  • Automatic Detection

This will use the .config for the U-Boot specified in PREFERRED_PROVIDER_virtual/bootloader once the Yocto task do_configure is executed.

VIGILES_UBOOT_CONFIG = "auto"
  • Manual Specification

NOTE: This must be a full U-Boot config, not a defconfig!

VIGILES_UBOOT_CONFIG = "</projects/uboot/uboot-2020.04/.config>"

Specifying a LinuxLink Key File

Full CVE reporting requires a LinuxLink License Key, though the Vigiles CVE Scanner will still execute in Demo Mode and produce an abbreviated report if one is not configured.

To use an alternate key, or a key in a non-default location, you can specify the location in conf/local.conf with a statement like the following:

VIGILES_KEY_FILE = "/tools/timesys/linuxlink_key"

If set, this option can be overridden on the command line by setting the environment variable VIGILES_KEY_FILE to the location of an alternate Key File. This feature can be used by developers to use a personal/local key without having to change a shared local.conf for a board.

Specifying a Product or Manifest

By default your manifest will be uploaded to the top-level folder of your "Private Workspace" Product on the Vigiles Dashboard. This can be changed by downloading the "Dashboard Config" for an alternative Product and/or Folder and specifying it in your local.conf file.

If set, this option can be overridden on the command line by setting the environment variable VIGILES_DASHBOARD_CONFIG to the location of an alternate Dashboard Config file. This feature can be used by developers to use a personal/local key without having to change a shared local.conf for a board.

New Products can be defined by clicking on the "New Product" product link and specifying a name. To download the Dashboard Config for the top-level folder of that Product, click on the "Product Settings" link and you will see a preview of the dashboard config file. You can copy the contents and create the file for yourself or choose to download it with the buttons on the right.

Once a new product is created, sub-folders may be created by clicking on the "Create Folder" and specifying a name. The Dashboard Config for that Folder (in that Product) may be downloaded by first clicking on/opening the Folder, then clicking the "Folder Settings" link and choosing to copy or download the config for that folder.

Dashboard Config files will be downloaded by default to e.g. "${HOME}/Downloads/<product name>_<folder name>_dashboard_config". Once moving and/or renaming it as necessary, you can control the behavior of Vigiles with meta-timesys by modifying conf/local.conf to set the appropriate variable:

VIGILES_DASHBOARD_CONFIG = "${HOME}/timesys/dashboard_config"

Dynamic subfolder creation

If a Dashboard Config is used, a subfolder name can be specified for dynamic folder creation. Manifests will be uploaded to a subfolder with this name within the location specified in the Dashbord Config. If one does not exist, it will be created. This option will be overridden by the environment variable VIGILES_SUBFOLDER_NAME. You can control the behavior of Vigiles with meta-timesys by modifying conf/local.conf to set the appropriate variable:

VIGILES_SUBFOLDER_NAME = "Release X.x"

Specifying Additional Packages to Check

In some cases, a BSP may want to include packages that are built outside of the Bitbake/Yocto process. If this is required, VIGILES_EXTRA_PACKAGES may be used to specify one or more CSV (comma-separated-value) files that describe the extra packages to include in the CVE check.

For example, one may set this in their local.conf:

VIGILES_EXTRA_PACKAGES = "${HOME}/projects/this-bsp/non-yocto/yocto-extra.csv"

or perhaps:

VIGILES_EXTRA_PACKAGES = " \
	${HOME}/projects/this-bsp/non-yocto/yocto-extra-boot.csv \
	${HOME}/projects/this-bsp/non-yocto/yocto-extra-ui.csv   \
"
CSV Format

The CSV files consist of an optional header and the following fields:

  • Product - the CPE Name that packages use in CVEs
  • (optional) Version - the version of the package used.
  • (optional) License - the license of the package used

The following example shows the accepted syntax for expressing extra packages:

$ cat yocto-extra.csv
product,version,license
avahi,0.6
bash,4.0
bash,4.1,GPL 3.0
busybox,
udev,,"GPLv2.0+, LGPL-2.1+"

Excluding Packages From the CVE Check

In some cases, a BSP may want to exclude packages from the Vigiles Report; for instance to condense the output by removing packages that are 'installed' but have no files (e.g. packagegroups or those that only install data files).

This can be done by setting VIGILES_EXCLUDE to a space-separated list of one or more CSV files that contain a list of packages to drop from the generated manifest before it is submitted for the CVE check.

For example, in conf/local.conf:

VIGILES_EXCLUDE = "${TOPDIR}/vigiles-exclude.csv"

And in ${TOPDIR}/vigiles-exclude.csv:

linux-libc-headers
opkg-utils
packagegroup-core-boot

Note: filtering of packages is performed as the final step in constructing the manifest, after any additional packages are included.

Uploading the Manifest (Only)

In some cases, it may be desired to upload the Vigiles Manifest for a build without generating a CVE Report. This can speed up build times and ease reporting of automated bulk builds.

This behavior can be enabled by setting the boolean variable VIGILES_UPLOAD_ONLY to '1' or 'True' in conf/local.conf

VIGILES_UPLOAD_ONLY = "1"

Instead of a text report and a link to the online report, a link to the Vigiles Dashboard Product Workspace (as specified with VIGILES_DASHBOARD_CONFIG) will be displayed, from where it can be then be scanned by the Vigiles Service.

Exclude packages with "CLOSED" License in SBOM

Packages that have a closed license are included in the SBOM by default.

To exclude these packages, set VIGILES_INCLUDE_CLOSED_LICENSES to "0" or "False" in conf/local.conf.

VIGILES_INCLUDE_CLOSED_LICENSES = "0"

Disable SBOM and Report generation for initramfs image

SBOM and report generation for the initramfs image can be disabled in local conf. Both Initramfs SBOM and report are generated by default if INITRAMFS_IMAGE is set.

To disable initramfs SBOM generation set VIGILES_DISABLE_INITRAMFS_SBOM = "1"

Note: If Generating initramfs SBOM is disabled it will disable initramfs report generation by default.

VIGILES_DISABLE_INITRAMFS_SBOM = "1"

To disable initramfs report generation only, set VIGILES_DISABLE_INITRAMFS_REPORT = "1"

VIGILES_DISABLE_INITRAMFS_REPORT = "1"

Maintenance

The Vigiles CVE Scanner and meta-timesys are maintained by The Timesys Security team.

For Updates, Support and More Information, please see:

Vigiles Website

and

meta-timesys @ GitHub

meta-timesys's People

Contributors

harish-bansal avatar iancampbell avatar indresh-timesys avatar lsteube avatar mgpb avatar mochel-timesys avatar nodeax avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

meta-timesys's Issues

Vigiles does not seem to work with meta-freescale?

Hello,

Vigiles does not seem to work when trying to build a hardware from meta-freescale layer:

Parsing recipes: 100% |#################################################################################| Time: 0:00:12
Parsing of 907 .bb files complete (0 cached, 907 parsed). 1467 targets, 164 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies
ERROR: Nothing PROVIDES 'linux-fslc-imx'
linux-fslc-imx was skipped: incompatible with machine imx7dsabresd (not in COMPATIBLE_MACHINE)
ERROR: Required build target 'core-image-minimal' has no buildable providers.
Missing or unbuildable dependency chain was: ['core-image-minimal', 'linux-fslc-imx']

Summary: There were 2 ERROR messages shown, returning a non-zero exit code.

I found that getting rid of INHERIT += "vigiles" in local.conf seems to make builds working again.

My entire test script is below. If the second to last line is uncommented the build will break. Comment it again and build will proceed normally.

#!/bin/bash

set -xe

THIS_SCRIPT_DIR=$(dirname "$(realpath -s $0)")

# Get layers
if [ -d poky ]; then
    pushd poky
    git pull
    popd
else
    git clone -b dunfell --depth 1 git://git.yoctoproject.org/poky.git
fi

if [ -d meta-freescale ]; then
    pushd meta-freescale
    git pull
    popd
else
    git clone -b dunfell --depth 1 https://github.com/Freescale/meta-freescale.git
fi

if [ -d meta-timesys ]; then
    pushd meta-timesys
    git pull
    popd
else
    git clone -b dunfell --depth 1 https://github.com/TimeSysGit/meta-timesys.git
fi

# Clean previous local.conf modifications
rm -f "$THIS_SCRIPT_DIR/build/conf/local.conf"

# Source bitbake setup script (should regenerate local.conf)
source "poky/oe-init-build-env"

# Add extra layers
bitbake-layers add-layer "$THIS_SCRIPT_DIR/meta-freescale"
bitbake-layers add-layer "$THIS_SCRIPT_DIR/meta-timesys"

# Modify local.conf
echo '' >> "$THIS_SCRIPT_DIR/build/conf/local.conf"
echo 'MACHINE = "imx7dsabresd"' >> "$THIS_SCRIPT_DIR/build/conf/local.conf"

# Uncommenting this will break build
#echo 'INHERIT += "vigiles" ' >> "$THIS_SCRIPT_DIR/build/conf/local.conf"

bitbake core-image-minimal

Whitelisted CVEs still showing in online report?

Hi,

I am unable to find documented expected behavior for whitelisted CVEs. When I print the local report I see that the CVE Whitelist variable has been populated:

-- Vigiles CVE Whitelist --
        * CVE-2011-xxxxx
        * CVE-2011-xxxxx
        * CVE-2011-xxxxx
        * CVE-2013-xxxxx
        * CVE-2014-xxxxx
        * CVE-2015-xxxxx
        * CVE-2016-xxxxx
        * CVE-2018-xxxxx
        * CVE-2018-xxxxx
        * CVE-2018-xxxxx
        * CVE-2019-xxxxx
        * CVE-2019-xxxxx
        * CVE-2019-xxxxx
        * CVE-2019-xxxxx
        * CVE-2019-xxxxx
        * CVE-2019-xxxxx
        * CVE-2019-xxxxx
        * CVE-2019-xxxxx
        * CVE-2020-xxxxx
        * CVE-2020-xxxxx
        * CVE-2020-xxxxx
        * CVE-2020-xxxxx
        * CVE-2020-xxxxx
        * CVE-2020-xxxxx
        * CVE-2020-xxxxx
        * CVE-2020-xxxxx
        * CVE-2021-xxxxx
        * CVE-2021-xxxxx
        * CVE-2021-xxxxx
        * CVE-2022-xxxxx
        * CVE-2022-xxxxx

I am not explicitly adding these CVEs via VIGILES_WHITELIST so I assume they are being pulled in from recipes declaring CVE_CHECK_WHITELIST?

When I explicitly declare a package or CVE into VIGILES_WHITELIST, they show up in the local report whitelisted CVEs, but the online report still lists them as 'unfixed'

Is this expected behavior? Should I be manually whitelisting CVEs in the report web interface? I thought I had a configuration before that was not displaying whitelisted CVEs/packages in the online report, but I can't reproduce that behavior at the moment.

I am using Dunfell branch.

multiubi build errors after recent change in poky

When inheriting "vigiles" in a Yocto 4.0 (kirkstone) project, the build fails with a multiubi-related error, even if your build isn't using multiubi. I've attached the error output in a file, since it contains characters that mess with github's markup:
vigiles_multiubi_error.txt

This is due to commit 32dd3d59c250f916115b339c29aa4dbfe50a3235 in poky, which was introduced in March 28th 2023. As expected, reverting this commit fixes the issue, but a better workaround for the moment is to include a "dummy" default value for MULTIUBI_BUILD in your build's platform. The error does not happen if you don't inherit "vigiles".

Is there a way to fix this error within meta-timesys?

[Ubuntu 20.04] - Python 3.8 compatability causes few failed do_vigiles_pkg()

I happen to use the Ubuntu 20.04 as my Host machine to build the core-image-sato and ofcourse I get a Warning that says:

WARNING: Host distribution "ubuntu-20.04" has not been validated with this version of the build system; you may possibly experience unexpected failures. It is recommended that you use a tested distribution.

But, still all the packages were built and even few tsmeta json files were created during this process. However there are few issues noticed after the core-image-sato-1.0-r0 do_rootfs with do_vigiles_pkg certain packages for example:

ERROR: libinput-1.12.6-r0 do_vigiles_pkg: Error executing a python function in exec_python_func() autogenerated:

The stack trace of python calls that resulted in this exception/failure was:
File: 'exec_python_func() autogenerated', lineno: 2, function: <module>
     0001:
 *** 0002:do_tsmeta_pkgvars(d)
     0003:
File: '/home/poky/meta-timesys/classes/tsmeta.bbclass', lineno: 466, function: do_tsmeta_pkgvars
     0462:
     0463:
     0464:python do_tsmeta_pkgvars() {
     0465:    tsmeta_get_pn(d)
 *** 0466:    tsmeta_get_src(d)
     0467:    tsmeta_get_pkg(d)
     0468:    tsmeta_get_packageconfig(d)
     0469:}
     0470:
File: '/home/poky/meta-timesys/classes/tsmeta.bbclass', lineno: 302, function: tsmeta_get_src
     0298:    return cve_v
     0299:
     0300:
     0301:def tsmeta_get_src(d):
 *** 0302:    import oe.recipeutils as oe
     0303:
     0304:    tsm_type = "src"
     0305:    src_dict = dict()
     0306:
File: '/home/poky/meta/lib/oe/recipeutils.py', lineno: 21, function: <module>
     0017:import shutil
     0018:import re
     0019:import fnmatch
     0020:import glob
 *** 0021:import bb.tinfoil
     0022:
     0023:from collections import OrderedDict, defaultdict
     0024:from bb.utils import vercmp_string
     0025:
File: '/home/poky/bitbake/lib/bb/tinfoil.py', lineno: 18, function: <module>
     0014:import re
     0015:from collections import OrderedDict, defaultdict
     0016:
     0017:import bb.cache
 *** 0018:import bb.cooker
     0019:import bb.providers
     0020:import bb.taskdata
     0021:import bb.utils
     0022:import bb.command
File: '/home/poky/bitbake/lib/bb/cooker.py', lineno: 32, function: <module>
     0028:import queue
     0029:import signal
     0030:import subprocess
     0031:import errno
 *** 0032:import prserv.serv
     0033:import pyinotify
     0034:import json
     0035:import pickle
     0036:import codecs
File: '/home/poky/bitbake/lib/prserv/serv.py', lineno: 7, function: <module>
     0003:#
     0004:
     0005:import os,sys,logging
     0006:import signal, time
 *** 0007:from xmlrpc.server import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
     0008:import threading
     0009:import queue
     0010:import socket
     0011:import io
File: '/usr/lib/python3.8/xmlrpc/server.py', lineno: 117, function: <module>
     0113:import socketserver
     0114:import sys
     0115:import os
     0116:import re
 *** 0117:import pydoc
     0118:import traceback
     0119:try:
     0120:    import fcntl
     0121:except ImportError:
File: '/usr/lib/python3.8/pydoc.py', lineno: 370, function: <module>
     0366:    return module
     0367:
     0368:# ---------------------------------------------------- formatter base class
     0369:
 *** 0370:class Doc:
     0371:
     0372:    PYTHONDOCS = os.environ.get("PYTHONDOCS",
     0373:                                "https://docs.python.org/%d.%d/library"
     0374:                                % sys.version_info[:2])
File: '/usr/lib/python3.8/pydoc.py', lineno: 400, function: Doc
     0396:        raise TypeError(message)
     0397:
     0398:    docmodule = docclass = docroutine = docother = docproperty = docdata = fail
     0399:
 *** 0400:    def getdocloc(self, object, basedir=sysconfig.get_path('stdlib')):
     0401:        """Return the location of module docs or None"""
     0402:
     0403:        try:
     0404:            file = inspect.getabsfile(object)
File: '/usr/lib/python3.8/sysconfig.py', lineno: 512, function: get_path
     0508:    """Return a path corresponding to the scheme.
     0509:
     0510:    ``scheme`` is the install scheme name.
     0511:    """
 *** 0512:    return get_paths(scheme, vars, expand)[name]
     0513:
     0514:
     0515:def get_config_vars(*args):
     0516:    """With no arguments, return a dictionary of all configuration
File: '/usr/lib/python3.8/sysconfig.py', lineno: 502, function: get_paths
     0498:    ``scheme`` is the install scheme name. If not provided, it will
     0499:    return the default scheme for the current platform.
     0500:    """
     0501:    if expand:
 *** 0502:        return _expand_vars(scheme, vars)
     0503:    else:
     0504:        return _INSTALL_SCHEMES[scheme]
     0505:
     0506:
File: '/usr/lib/python3.8/sysconfig.py', lineno: 172, function: _expand_vars
     0168:def _expand_vars(scheme, vars):
     0169:    res = {}
     0170:    if vars is None:
     0171:        vars = {}
 *** 0172:    _extend_dict(vars, get_config_vars())
     0173:
     0174:    for key, value in _INSTALL_SCHEMES[scheme].items():
     0175:        if os.name in ('posix', 'nt'):
     0176:            value = os.path.expanduser(value)
File: '/usr/lib/python3.8/sysconfig.py', lineno: 550, function: get_config_vars
     0546:
     0547:        if os.name == 'nt':
     0548:            _init_non_posix(_CONFIG_VARS)
     0549:        if os.name == 'posix':
 *** 0550:            _init_posix(_CONFIG_VARS)
     0551:        # For backward compatibility, see issue19555
     0552:        SO = _CONFIG_VARS.get('EXT_SUFFIX')
     0553:        if SO is not None:
     0554:            _CONFIG_VARS['SO'] = SO
File: '/usr/lib/python3.8/sysconfig.py', lineno: 421, function: _init_posix
     0417:def _init_posix(vars):
     0418:    """Initialize the module as appropriate for POSIX systems."""
     0419:    # _sysconfigdata is generated at build time, see _generate_posix_vars()
     0420:    name = _get_sysconfigdata_name()
 *** 0421:    _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0)
     0422:    build_time_vars = _temp.build_time_vars
     0423:    vars.update(build_time_vars)
     0424:
     0425:def _init_non_posix(vars):
Exception: ModuleNotFoundError: No module named '_sysconfigdata'

ERROR: libinput-1.12.6-r0 do_vigiles_pkg: No module named '_sysconfigdata'
ERROR: libinput-1.12.6-r0 do_vigiles_pkg: Function failed: do_tsmeta_pkgvars
ERROR: Logfile of failure stored in: /home/build/tmp/work/armv7vet2hf-neon-poky-linux-gnueabi/libinput/1.12.6-r0/temp/log.do_vigiles_pkg.13128
ERROR: Task (/home/poky/meta/recipes-graphics/wayland/libinput_1.12.6.bb:do_vigiles_pkg) failed with exit code '1'
ERROR: libpsl-0.20.2-r0 do_vigiles_pkg: Error executing a python function in exec_python_func() autogenerated:

The stack trace of python calls that resulted in this exception/failure was:
File: 'exec_python_func() autogenerated', lineno: 2, function: <module>
     0001:
 *** 0002:do_tsmeta_pkgvars(d)
     0003:
File: '/home/poky/meta-timesys/classes/tsmeta.bbclass', lineno: 466, function: do_tsmeta_pkgvars
     0462:
     0463:
     0464:python do_tsmeta_pkgvars() {
     0465:    tsmeta_get_pn(d)
 *** 0466:    tsmeta_get_src(d)
     0467:    tsmeta_get_pkg(d)
     0468:    tsmeta_get_packageconfig(d)
     0469:}
     0470:
File: '/home/poky/meta-timesys/classes/tsmeta.bbclass', lineno: 302, function: tsmeta_get_src
     0298:    return cve_v
     0299:
     0300:
     0301:def tsmeta_get_src(d):
 *** 0302:    import oe.recipeutils as oe
     0303:
     0304:    tsm_type = "src"
     0305:    src_dict = dict()
     0306:
File: '/home/poky/meta/lib/oe/recipeutils.py', lineno: 21, function: <module>
     0017:import shutil
     0018:import re
     0019:import fnmatch
     0020:import glob
 *** 0021:import bb.tinfoil
     0022:
     0023:from collections import OrderedDict, defaultdict
     0024:from bb.utils import vercmp_string
     0025:
File: '/home/poky/bitbake/lib/bb/tinfoil.py', lineno: 18, function: <module>
     0014:import re
     0015:from collections import OrderedDict, defaultdict
     0016:
     0017:import bb.cache
 *** 0018:import bb.cooker
     0019:import bb.providers
     0020:import bb.taskdata
     0021:import bb.utils
     0022:import bb.command
File: '/home/poky/bitbake/lib/bb/cooker.py', lineno: 32, function: <module>
     0028:import queue
     0029:import signal
     0030:import subprocess
     0031:import errno
 *** 0032:import prserv.serv
     0033:import pyinotify
     0034:import json
     0035:import pickle
     0036:import codecs
File: '/home/poky/bitbake/lib/prserv/serv.py', lineno: 7, function: <module>
     0003:#
     0004:
     0005:import os,sys,logging
     0006:import signal, time
 *** 0007:from xmlrpc.server import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
     0008:import threading
     0009:import queue
     0010:import socket
     0011:import io
File: '/usr/lib/python3.8/xmlrpc/server.py', lineno: 117, function: <module>
     0113:import socketserver
     0114:import sys
     0115:import os
     0116:import re
 *** 0117:import pydoc
     0118:import traceback
     0119:try:
     0120:    import fcntl
     0121:except ImportError:
File: '/usr/lib/python3.8/pydoc.py', lineno: 370, function: <module>
     0366:    return module
     0367:
     0368:# ---------------------------------------------------- formatter base class
     0369:
 *** 0370:class Doc:
     0371:
     0372:    PYTHONDOCS = os.environ.get("PYTHONDOCS",
     0373:                                "https://docs.python.org/%d.%d/library"
     0374:                                % sys.version_info[:2])
File: '/usr/lib/python3.8/pydoc.py', lineno: 400, function: Doc
     0396:        raise TypeError(message)
     0397:
     0398:    docmodule = docclass = docroutine = docother = docproperty = docdata = fail
     0399:
 *** 0400:    def getdocloc(self, object, basedir=sysconfig.get_path('stdlib')):
     0401:        """Return the location of module docs or None"""
     0402:
     0403:        try:
     0404:            file = inspect.getabsfile(object)
File: '/usr/lib/python3.8/sysconfig.py', lineno: 512, function: get_path
     0508:    """Return a path corresponding to the scheme.
     0509:
     0510:    ``scheme`` is the install scheme name.
     0511:    """
 *** 0512:    return get_paths(scheme, vars, expand)[name]
     0513:
     0514:
     0515:def get_config_vars(*args):
     0516:    """With no arguments, return a dictionary of all configuration
File: '/usr/lib/python3.8/sysconfig.py', lineno: 502, function: get_paths
     0498:    ``scheme`` is the install scheme name. If not provided, it will
     0499:    return the default scheme for the current platform.
     0500:    """
     0501:    if expand:
 *** 0502:        return _expand_vars(scheme, vars)
     0503:    else:
     0504:        return _INSTALL_SCHEMES[scheme]
     0505:
     0506:
File: '/usr/lib/python3.8/sysconfig.py', lineno: 172, function: _expand_vars
     0168:def _expand_vars(scheme, vars):
     0169:    res = {}
     0170:    if vars is None:
     0171:        vars = {}
 *** 0172:    _extend_dict(vars, get_config_vars())
     0173:
     0174:    for key, value in _INSTALL_SCHEMES[scheme].items():
     0175:        if os.name in ('posix', 'nt'):
     0176:            value = os.path.expanduser(value)
File: '/usr/lib/python3.8/sysconfig.py', lineno: 550, function: get_config_vars
     0546:
     0547:        if os.name == 'nt':
     0548:            _init_non_posix(_CONFIG_VARS)
     0549:        if os.name == 'posix':
 *** 0550:            _init_posix(_CONFIG_VARS)
     0551:        # For backward compatibility, see issue19555
     0552:        SO = _CONFIG_VARS.get('EXT_SUFFIX')
     0553:        if SO is not None:
     0554:            _CONFIG_VARS['SO'] = SO
File: '/usr/lib/python3.8/sysconfig.py', lineno: 421, function: _init_posix
     0417:def _init_posix(vars):
     0418:    """Initialize the module as appropriate for POSIX systems."""
     0419:    # _sysconfigdata is generated at build time, see _generate_posix_vars()
     0420:    name = _get_sysconfigdata_name()
 *** 0421:    _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0)
     0422:    build_time_vars = _temp.build_time_vars
     0423:    vars.update(build_time_vars)
     0424:
     0425:def _init_non_posix(vars):
Exception: ModuleNotFoundError: No module named '_sysconfigdata'

ERROR: libpsl-0.20.2-r0 do_vigiles_pkg: No module named '_sysconfigdata'
ERROR: libpsl-0.20.2-r0 do_vigiles_pkg: Function failed: do_tsmeta_pkgvars
ERROR: Logfile of failure stored in: /home/build/tmp/work/armv7vet2hf-neon-poky-linux-gnueabi/libpsl/0.20.2-r0/temp/log.do_vigiles_pkg.13129
ERROR: Task (/home/poky/meta/recipes-support/libpsl/libpsl_0.20.2.bb:do_vigiles_pkg) failed with exit code '1'

I have installed Python 3.6.9 and set that as my default Python3 version, that resolved the all issues and the Vigiles Manifest got generated.

Even though am aware that it could be due to the fact that am using a Host distro that was not validated by Yocto. I thought of raising this issue, since all other packages were built fine and if there is something that you can patch in this layer to avoid this error.

If it is already in your radar, and is being addressed. Please close this post. Thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.