fix: fix Aur packages installation

This commit is contained in:
2026-05-27 07:49:49 +02:00
parent 084d1f5b42
commit 61e0e1e840
2 changed files with 24 additions and 2 deletions

View File

@ -52,13 +52,21 @@ def detect_active_user() -> str | None:
def _user_env(user: str) -> dict:
pw = pwd.getpwnam(user)
return {
uid = pw.pw_uid
env = {
"HOME": pw.pw_dir,
"USER": user,
"LOGNAME": user,
"XDG_RUNTIME_DIR": f"/run/user/{pw.pw_uid}",
"XDG_RUNTIME_DIR": f"/run/user/{uid}",
"PATH": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
# Évite que sudo bloque sans TTY si le helper essaie d'appeler sudo pacman
"SUDO_ASKPASS": "/bin/false",
}
# Socket DBUS de session (requis par paru/yay pour le build)
dbus_socket = Path(f"/run/user/{uid}/bus")
if dbus_socket.exists():
env["DBUS_SESSION_BUS_ADDRESS"] = f"unix:path={dbus_socket}"
return env
def check_aur_updates(user: str, helper: str) -> list[Package]:

View File

@ -265,6 +265,18 @@ class Daemon:
except Exception:
pass
async def _aur_pending_loop(self):
"""Réessaie l'installation AUR toutes les 5 min si des paquets sont en attente.
Nécessaire car le cycle AUR au démarrage échoue souvent (aucun utilisateur
connecté), et le prochain cycle horaire est trop tardif.
"""
while self._running:
await asyncio.sleep(300)
if self._state.get("pending_aur"):
logger.info("Paquets AUR en attente — nouvelle tentative d'installation")
await self.aur_cycle()
async def run(self):
if SOCKET_PATH.exists():
SOCKET_PATH.unlink()
@ -290,6 +302,8 @@ class Daemon:
await asyncio.sleep(FIRST_RUN_DELAY_SECONDS)
await self.update_cycle()
asyncio.create_task(self._aur_pending_loop())
while self._running:
await asyncio.sleep(UPDATE_INTERVAL_SECONDS)
await self.update_cycle()