From d69e5679b87f1bb1d3472a5a3608c735000e87f8 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Tue, 29 Aug 2023 15:44:59 +0200 Subject: [PATCH] Add 'debug' option which preserves failed package dirs (#119) If a package fails to install, it is normally deleted to prevent stale packages from clogging up the system. But for debugging the failure it is useful to keep the package around. --- gap/PackageManager.gi | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/gap/PackageManager.gi b/gap/PackageManager.gi index a2960c1..a7ae7cb 100644 --- a/gap/PackageManager.gi +++ b/gap/PackageManager.gi @@ -291,13 +291,17 @@ function(url) # Install dependencies if PKGMAN_InstallDependencies(dir) <> true then Info(InfoPackageManager, 1, "Dependencies not satisfied for ", topdir); - PKGMAN_RemoveDir(dir); + if ValueOption("debug") <> true then + PKGMAN_RemoveDir(dir); + fi; return false; fi; # Check validity if PKGMAN_CheckPackage(dir) = false then - PKGMAN_RemoveDir(dir); + if ValueOption("debug") <> true then + PKGMAN_RemoveDir(dir); + fi; return false; fi; PKGMAN_RefreshPackageInfo(); @@ -380,14 +384,18 @@ function(url, args...) info := Filename(Directory(dir), "PackageInfo.g"); if not IsReadableFile(info) then Info(InfoPackageManager, 1, "Could not find PackageInfo.g"); - PKGMAN_RemoveDir(dir); + if ValueOption("debug") <> true then + PKGMAN_RemoveDir(dir); + fi; return false; fi; # Install dependencies if PKGMAN_InstallDependencies(dir) <> true then Info(InfoPackageManager, 1, "Dependencies not satisfied for ", name); - PKGMAN_RemoveDir(dir); + if ValueOption("debug") <> true then + PKGMAN_RemoveDir(dir); + fi; return false; fi; @@ -470,14 +478,18 @@ function(url, args...) info := Filename(Directory(dir), "PackageInfo.g"); if not IsReadableFile(info) then Info(InfoPackageManager, 1, "Could not find PackageInfo.g"); - PKGMAN_RemoveDir(dir); + if ValueOption("debug") <> true then + PKGMAN_RemoveDir(dir); + fi; return false; fi; # Install dependencies if PKGMAN_InstallDependencies(dir) <> true then Info(InfoPackageManager, 1, "Dependencies not satisfied for ", name); - PKGMAN_RemoveDir(dir); + if ValueOption("debug") <> true then + PKGMAN_RemoveDir(dir); + fi; return false; fi;