| Server IP : 127.0.1.1 / Your IP : 216.73.216.152 Web Server : Apache/2.4.52 (Ubuntu) System : Linux bahcrestlinepropertiesllc 5.15.0-113-generic #123-Ubuntu SMP Mon Jun 10 08:16:17 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /proc/2792866/cwd/lib/python3/dist-packages/uaclient/ |
Upload File : |
"""
Client version related functions
"""
import os.path
from math import inf
from typing import Optional
from uaclient.apt import (
get_apt_cache_time,
get_pkg_candidate_version,
version_compare,
)
from uaclient.defaults import CANDIDATE_CACHE_PATH, UAC_RUN_PATH
from uaclient.exceptions import ProcessExecutionError
from uaclient.system import subp
__VERSION__ = "35.1"
PACKAGED_VERSION = "35.1ubuntu0~22.04"
def get_version() -> str:
"""Return the packaged version as a string
Prefer the binary PACKAGED_VESION set by debian/rules to DEB_VERSION.
If unavailable, check for a .git development environments:
a. If run in our upstream repo `git describe` will gives a leading
XX.Y so return the --long version to allow daily build recipes
to count commit offset from upstream's XX.Y signed tag.
b. If run in a git-ubuntu pkg repo, upstream tags aren't visible,
believe __VERSION__ is correct - there is and MUST always be a
test to make sure it matches debian/changelog
"""
if not PACKAGED_VERSION.startswith("@@PACKAGED_VERSION"):
return PACKAGED_VERSION
topdir = os.path.dirname(os.path.dirname(__file__))
if os.path.exists(os.path.join(topdir, ".git")):
cmd = ["git", "describe", "--abbrev=8", "--match=[0-9]*", "--long"]
try:
out, _ = subp(cmd)
return out.strip()
except ProcessExecutionError:
pass
return __VERSION__
def get_last_known_candidate() -> Optional[str]:
# If we can't determine when the cache was updated for the last time,
# We always assume it was as recent as possible - thus `inf`.
last_apt_cache_update = get_apt_cache_time() or inf
if (
not os.path.exists(CANDIDATE_CACHE_PATH)
or os.stat(CANDIDATE_CACHE_PATH).st_mtime < last_apt_cache_update
):
candidate_version = None
try:
candidate_version = get_pkg_candidate_version("ubuntu-pro-client")
if candidate_version:
os.makedirs(UAC_RUN_PATH, exist_ok=True)
with open(CANDIDATE_CACHE_PATH, "w") as f:
f.write(candidate_version)
return candidate_version
except Exception:
if candidate_version is not None:
return candidate_version
try:
with open(CANDIDATE_CACHE_PATH, "r") as f:
return f.read().strip()
except Exception:
pass
return None
def check_for_new_version() -> Optional[str]:
candidate = get_last_known_candidate()
if candidate and version_compare(candidate, get_version()) > 0:
return candidate
return None