# # Erminig - Lancement de la construction du paquet # Copyright (C) 2025 L0m1g # Sous licence DOUARN - Voir le fichier LICENCE pour les détails # # Ce fichier fait partie du projet Erminig. # Libre comme l’air, stable comme un menhir, et salé comme le beurre. # import os import subprocess from erminig.core.config import Config from erminig.core.security import check_root, check_user_exists, run_as_user check_root check_user_exists("pak") def run_pakva_function(pakva_path, name, version, func_name): """ Exécute une fonction d’un fichier Pakva donné (ex: build, pak). """ build_root = Config.BUILD_DIR / f"{name}-{version}" src_dir = build_root / "src" tmp_dir = build_root / "tmp" os.makedirs(src_dir, exist_ok=True) os.makedirs(tmp_dir, exist_ok=True) env = os.environ.copy() env["SRC"] = str(src_dir) env["TMP"] = str(tmp_dir) try: result = subprocess.run( f""" set -e source "{pakva_path}" {func_name} """, shell=True, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, executable="/bin/bash", text=True, env=env, ) print(f"[{func_name.upper()}] Succès : {pakva_path.name}") print(result.stdout) return True except subprocess.CalledProcessError as e: print(f"[{func_name.upper()}] Échec : {pakva_path.name}") print(e.stderr) return False @run_as_user("pak") def run_build_function(pakva_path, name, version): return run_pakva_function(pakva_path, name, version, "build") def run_pak_function(pakva_path, name, version): return run_pakva_function(pakva_path, name, version, "pak")