summaryrefslogtreecommitdiffstats
path: root/meta/lib/oeqa/utils/metadata.py
diff options
context:
space:
mode:
Diffstat (limited to 'meta/lib/oeqa/utils/metadata.py')
-rw-r--r--meta/lib/oeqa/utils/metadata.py38
1 files changed, 22 insertions, 16 deletions
diff --git a/meta/lib/oeqa/utils/metadata.py b/meta/lib/oeqa/utils/metadata.py
index cb81155e54..8013aa684d 100644
--- a/meta/lib/oeqa/utils/metadata.py
+++ b/meta/lib/oeqa/utils/metadata.py
@@ -1,6 +1,6 @@
# Copyright (C) 2016 Intel Corporation
#
-# Released under the MIT license (see COPYING.MIT)
+# SPDX-License-Identifier: MIT
#
# Functions to get metadata from the testing host used
# for analytics of test results.
@@ -10,19 +10,9 @@ from collections.abc import MutableMapping
from xml.dom.minidom import parseString
from xml.etree.ElementTree import Element, tostring
+from oe.lsb import get_os_release
from oeqa.utils.commands import runCmd, get_bb_vars
-def get_os_release():
- """Get info from /etc/os-release as a dict"""
- data = OrderedDict()
- os_release_file = '/etc/os-release'
- if not os.path.exists(os_release_file):
- return None
- with open(os_release_file) as fobj:
- for line in fobj:
- key, value = line.split('=', 1)
- data[key.strip().lower()] = value.strip().strip('"')
- return data
def metadata_from_bb():
""" Returns test's metadata as OrderedDict.
@@ -45,9 +35,9 @@ def metadata_from_bb():
os_release = get_os_release()
if os_release:
info_dict['host_distro'] = OrderedDict()
- for key in ('id', 'version_id', 'pretty_name'):
+ for key in ('ID', 'VERSION_ID', 'PRETTY_NAME'):
if key in os_release:
- info_dict['host_distro'][key] = os_release[key]
+ info_dict['host_distro'][key.lower()] = os_release[key]
info_dict['layers'] = get_layers(data_dict['BBLAYERS'])
info_dict['bitbake'] = git_rev_info(os.path.dirname(bb.__file__))
@@ -68,9 +58,25 @@ def metadata_from_data_store(d):
def git_rev_info(path):
"""Get git revision information as a dict"""
- from git import Repo, InvalidGitRepositoryError, NoSuchPathError
-
info = OrderedDict()
+
+ try:
+ from git import Repo, InvalidGitRepositoryError, NoSuchPathError
+ except ImportError:
+ import subprocess
+ try:
+ info['branch'] = subprocess.check_output(["git", "rev-parse", "--abbrev-ref", "HEAD"], cwd=path).decode('utf-8').strip()
+ except subprocess.CalledProcessError:
+ pass
+ try:
+ info['commit'] = subprocess.check_output(["git", "rev-parse", "HEAD"], cwd=path).decode('utf-8').strip()
+ except subprocess.CalledProcessError:
+ pass
+ try:
+ info['commit_count'] = int(subprocess.check_output(["git", "rev-list", "--count", "HEAD"], cwd=path).decode('utf-8').strip())
+ except subprocess.CalledProcessError:
+ pass
+ return info
try:
repo = Repo(path, search_parent_directories=True)
except (InvalidGitRepositoryError, NoSuchPathError):