[arch] fix: error raised when the temporary directory does not exist (AUR build)

This commit is contained in:
Vinicius Moreira
2022-05-27 09:49:56 -03:00
parent 1a202d9746
commit 4d1a118b25
3 changed files with 27 additions and 11 deletions

View File

@@ -3,6 +3,7 @@ import os
import shutil
import traceback
from logging import Logger
from pathlib import Path
from typing import Optional, Set, Tuple, Dict
from bauh.api.paths import TEMP_DIR
@@ -25,10 +26,21 @@ def current_governors() -> Dict[str, Set[int]]:
return governors
def set_governor(governor: str, root_password: Optional[str], cpu_idxs: Optional[Set[int]] = None):
def set_governor(governor: str, root_password: Optional[str], logger: Logger, cpu_idxs: Optional[Set[int]] = None):
new_gov_file = f'{TEMP_DIR}/bauh_scaling_governor'
with open(new_gov_file, 'w+') as f:
f.write(governor)
try:
Path(TEMP_DIR).mkdir(exist_ok=True, parents=True)
except OSError:
logger.error(f"Could not create temporary directory for changing CPU governor: {TEMP_DIR}")
return
try:
with open(new_gov_file, 'w+') as f:
f.write(governor)
except OSError:
logger.error(f"Could not write new governor ({governor}) to {new_gov_file}")
return
for idx in (cpu_idxs if cpu_idxs else range(multiprocessing.cpu_count())):
_change_governor(idx, new_gov_file, root_password)
@@ -37,7 +49,7 @@ def set_governor(governor: str, root_password: Optional[str], cpu_idxs: Optional
try:
os.remove(new_gov_file)
except OSError:
traceback.print_exc()
logger.error(f"Could not remove temporary governor file ({new_gov_file})")
def _change_governor(cpu_idx: int, new_gov_file_path: str, root_password: Optional[str]):
@@ -49,7 +61,7 @@ def _change_governor(cpu_idx: int, new_gov_file_path: str, root_password: Option
traceback.print_exc()
def set_all_cpus_to(governor: str, root_password: Optional[str], logger: Optional[Logger] = None) \
def set_all_cpus_to(governor: str, root_password: Optional[str], logger: Logger) \
-> Tuple[bool, Optional[Dict[str, Set[int]]]]:
cpus_changed, cpu_governors = False, current_governors()
@@ -63,18 +75,18 @@ def set_all_cpus_to(governor: str, root_password: Optional[str], logger: Optiona
if logger:
logger.info(f"Changing CPUs {not_in_performance} governors to '{governor}'")
set_governor(governor, root_password, not_in_performance)
set_governor(governor=governor, root_password=root_password, logger=logger, cpu_idxs=not_in_performance)
cpus_changed = True
return cpus_changed, cpu_governors
def set_cpus(governors: Dict[str, Set[int]], root_password: Optional[str], ignore_governors: Optional[Set[str]] = None,
logger: Optional[Logger] = None):
def set_cpus(governors: Dict[str, Set[int]], root_password: Optional[str], logger: Logger,
ignore_governors: Optional[Set[str]] = None):
for gov, cpus in governors.items():
if not ignore_governors or gov not in ignore_governors:
if logger:
logger.info(f"Changing CPUs {cpus} governors to '{gov}'")
set_governor(gov, root_password, cpus)
set_governor(governor=gov, root_password=root_password, logger=logger, cpu_idxs=cpus)