From a1ef96094fdf5900403602229ab4906174b6c10b Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Thu, 4 Jun 2026 19:41:43 +0900 Subject: [PATCH] feat: check for missing local library --- dzgui/init/libgi.py | 51 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 dzgui/init/libgi.py diff --git a/dzgui/init/libgi.py b/dzgui/init/libgi.py new file mode 100644 index 0000000..90041ad --- /dev/null +++ b/dzgui/init/libgi.py @@ -0,0 +1,51 @@ +import platform +import sys + +from pathlib import Path + +LIB = "libgirepository-2.0" + + +def is_debian() -> bool: + """ + cf. + + NAME="Debian GNU/Linux" + ID=debian + + NAME="Ubuntu" + ID=ubuntu + ID_LIKE=debian + + NAME="Linux Mint" + ID=linuxmint + ID_LIKE="ubuntu debian" + + NAME="Pop!_OS" + ID=pop + ID_LIKE="ubuntu debian" + """ + release = platform.freedesktop_os_release() + strings = ["ubuntu debian", "debian"] + try: + self_id = release["ID"] + if self_id == "debian": + return True + id_like = release["ID_LIKE"] + return id_like in strings + except Exception as e: + print(e) + return False + + +def has_libgi() -> bool: + parent_dir = Path("/usr/lib64") + exists = any(LIB in subdir.name for subdir in parent_dir.iterdir()) + return exists + + +def test_missing_lib() -> bool: + if is_debian() and has_libgi() is False: + # TODO: clean up warning + print(f"sudo apt install {LIB}") + sys.exit(1)