diff --git a/src/modules/packages/main.py b/src/modules/packages/main.py index 3e29d72e1..4f746dccc 100644 --- a/src/modules/packages/main.py +++ b/src/modules/packages/main.py @@ -178,6 +178,7 @@ class PMPackageKit(PackageManager): def update_system(self): check_target_env_call(["pkcon", "-py", "update"]) + class PMZypp(PackageManager): backend = "zypp" @@ -198,6 +199,7 @@ class PMZypp(PackageManager): # Doesn't need to update the system explicitly pass + class PMYum(PackageManager): backend = "yum" @@ -215,6 +217,7 @@ class PMYum(PackageManager): def update_system(self): check_target_env_call(["yum", "-y", "upgrade"]) + class PMDnf(PackageManager): backend = "dnf" @@ -274,6 +277,7 @@ class PMApt(PackageManager): # Doesn't need to update the system explicitly pass + class PMXbps(PackageManager): backend = "xbps" @@ -289,6 +293,7 @@ class PMXbps(PackageManager): def update_system(self): check_target_env_call(["xbps", "-Suy"]) + class PMPacman(PackageManager): backend = "pacman" @@ -311,6 +316,31 @@ class PMPacman(PackageManager): check_target_env_call(["pacman", "-Su", "--noconfirm"]) +class PMPamac(PackageManager): + backend = "pamac" + + def del_db_lock(self, lock="/var/lib/pacman/db.lck"): + # In case some error or crash, the database will be locked, + # resulting in remaining packages not being installed. + check_target_env_call(["rm", "-f", lock]) + + def install(self, pkgs, from_local=False): + self.del_db_lock() + check_target_env_call([self.backend, "install", "--no-confirm"] + pkgs) + + def remove(self, pkgs): + self.del_db_lock() + check_target_env_call([self.backend, "remove", "--no-confirm"] + pkgs) + + def update_db(self): + self.del_db_lock() + check_target_env_call([self.backend, "update", "--no-confirm"]) + + def update_system(self): + self.del_db_lock() + check_target_env_call([self.backend, "upgrade", "--no-confirm"]) + + class PMPortage(PackageManager): backend = "portage" diff --git a/src/modules/packages/packages.conf b/src/modules/packages/packages.conf index bcf313972..738117ea4 100644 --- a/src/modules/packages/packages.conf +++ b/src/modules/packages/packages.conf @@ -11,6 +11,7 @@ # - urpmi - Mandriva package manager # - yum - Yum RPM frontend # - zypp - Zypp RPM frontend +# - pamac - Manjaro package manager # # Not actually a package manager, but suitable for testing: # - dummy - Dummy manager, only logs diff --git a/src/modules/packages/packages.schema.yaml b/src/modules/packages/packages.schema.yaml index 40f82bb35..cdb2fefdf 100644 --- a/src/modules/packages/packages.schema.yaml +++ b/src/modules/packages/packages.schema.yaml @@ -17,6 +17,7 @@ properties: - urpmi - yum - zypp + - pamac - dummy update_db: { type: boolean, default: true }