mirror of
https://github.com/saymrwulf/uhd.git
synced 2026-05-15 21:01:26 +00:00
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.
60 lines
1.9 KiB
Python
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()
|