diff options
Diffstat (limited to 'meta/lib/oeqa/utils/metadata.py')
-rw-r--r-- | meta/lib/oeqa/utils/metadata.py | 38 |
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): |