Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archinstall/lib/hardware.py34
1 files changed, 21 insertions, 13 deletions
diff --git a/archinstall/lib/hardware.py b/archinstall/lib/hardware.py
index 03335e45..56444eeb 100644
--- a/archinstall/lib/hardware.py
+++ b/archinstall/lib/hardware.py
@@ -1,7 +1,7 @@
import json
import os
-import subprocess
-from typing import Optional
+from pathlib import Path
+from typing import Iterator, Optional
from .general import SysCommand
from .networking import list_interfaces, enrich_iface_types
@@ -57,25 +57,33 @@ AVAILABLE_GFX_DRIVERS = {
"VMware / VirtualBox (open-source)": ["mesa", "xf86-video-vmware"],
}
+CPUINFO = Path("/proc/cpuinfo")
+
+
+def cpuinfo() -> Iterator[dict[str, str]]:
+ """Yields information about the CPUs of the system."""
+ cpu = {}
+
+ with CPUINFO.open() as file:
+ for line in file:
+ if not (line := line.strip()):
+ yield cpu
+ cpu = {}
+ continue
+
+ key, value = line.split(":", maxsplit=1)
+ cpu[key.strip()] = value.strip()
+
def has_wifi() -> bool:
return 'WIRELESS' in enrich_iface_types(list_interfaces().values()).values()
def has_amd_cpu() -> bool:
- try:
- return subprocess.check_output("lscpu | grep AMD", shell=True).strip().decode()
- except:
- pass
- return False
-
+ return any(cpu.get("vendor_id") == "AuthenticAMD" for cpu in cpuinfo())
def has_intel_cpu() -> bool:
- try:
- return subprocess.check_output("lscpu | grep Intel", shell=True).strip().decode()
- except:
- pass
- return False
+ return any(cpu.get("vendor_id") == "GenuineIntel" for cpu in cpuinfo())
def has_uefi() -> bool:
return os.path.isdir('/sys/firmware/efi')