uhd/mpm/python/usrp_mpm/sys_utils/filesystem_status.py
Michael Auchter 70abcdc17b mpm: check-filesystem: liberalize version check
check-filesystem assumed that UHD's version string always had the format
of <version>-<git_count>-<git_hash>. However, this is not always the
case; see ./host/cmake/Modules/UHDVersion.cmake for more details.

Instead of trying to parse the version string into components, just
check to make sure the version and git hash are present in the version
string.
2021-06-02 22:28:43 -07:00

60 lines
1.9 KiB
Python

#
# Copyright 2020 Ettus Research, a National Instruments Company
#
# SPDX-License-Identifier: GPL-3.0-or-later
#
"""
Utilities for checking the filesystem status
"""
import hashlib
import pathlib
import subprocess
import time
def get_uhd_version(filesystem_root='/'):
file = pathlib.Path(filesystem_root, 'usr/bin/uhd_config_info')
versionstring = subprocess.check_output([file, '--version']).decode('utf-8').splitlines()[0]
return versionstring
def get_mender_artifact(filesystem_root='/', parse_manually=False):
def parse_artifact(output):
for line in output.splitlines():
if line.startswith('artifact_name='):
return line[14:]
return None
if filesystem_root != '/':
parse_manually = True
if parse_manually:
# parse mender artifact manually
file = pathlib.Path(filesystem_root, 'etc/mender/artifact_info')
if not file.exists():
return None
return parse_artifact(file.read_text())
try:
output = subprocess.check_output(['/usr/bin/mender', '-show-artifact']).decode('utf-8')
return output.splitlines()[0]
except:
return None
def get_fs_version(filesystem_root='/'):
file = pathlib.Path(filesystem_root, 'etc/version')
if not file.exists():
return None
return file.read_text().splitlines()[0]
def get_opkg_status_date(date_only=False, filesystem_root='/'):
if date_only:
tformat = "%Y-%m-%d"
else:
tformat = "%Y-%m-%d %H:%M:%S"
file = pathlib.Path(filesystem_root, 'var/lib/opkg/status')
if not file.exists():
return None
return time.strftime(tformat, time.gmtime(file.stat().st_mtime))
def get_opkg_status_md5sum(filesystem_root='/'):
file = pathlib.Path(filesystem_root, 'var/lib/opkg/status')
if not file.exists():
return None
return hashlib.md5sum(file.read_text()).hexdigest()