fix: fix Aur packages installation
This commit is contained in:
@ -52,13 +52,21 @@ def detect_active_user() -> str | None:
|
|||||||
|
|
||||||
def _user_env(user: str) -> dict:
|
def _user_env(user: str) -> dict:
|
||||||
pw = pwd.getpwnam(user)
|
pw = pwd.getpwnam(user)
|
||||||
return {
|
uid = pw.pw_uid
|
||||||
|
env = {
|
||||||
"HOME": pw.pw_dir,
|
"HOME": pw.pw_dir,
|
||||||
"USER": user,
|
"USER": user,
|
||||||
"LOGNAME": 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",
|
"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]:
|
def check_aur_updates(user: str, helper: str) -> list[Package]:
|
||||||
|
|||||||
@ -265,6 +265,18 @@ class Daemon:
|
|||||||
except Exception:
|
except Exception:
|
||||||
pass
|
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):
|
async def run(self):
|
||||||
if SOCKET_PATH.exists():
|
if SOCKET_PATH.exists():
|
||||||
SOCKET_PATH.unlink()
|
SOCKET_PATH.unlink()
|
||||||
@ -290,6 +302,8 @@ class Daemon:
|
|||||||
await asyncio.sleep(FIRST_RUN_DELAY_SECONDS)
|
await asyncio.sleep(FIRST_RUN_DELAY_SECONDS)
|
||||||
await self.update_cycle()
|
await self.update_cycle()
|
||||||
|
|
||||||
|
asyncio.create_task(self._aur_pending_loop())
|
||||||
|
|
||||||
while self._running:
|
while self._running:
|
||||||
await asyncio.sleep(UPDATE_INTERVAL_SECONDS)
|
await asyncio.sleep(UPDATE_INTERVAL_SECONDS)
|
||||||
await self.update_cycle()
|
await self.update_cycle()
|
||||||
|
|||||||
Reference in New Issue
Block a user