From 611cfd683ecb62984db577149b7ac39f161000b3 Mon Sep 17 00:00:00 2001 From: Dimitris Zlatanidis Date: Mon, 10 Oct 2016 16:35:29 +0300 Subject: [PATCH] Added feature rebuild and reinstall --- man/slpkg.8 | 7 ++++++- slpkg/arguments.py | 8 +++++--- slpkg/binary/install.py | 13 +++++++++---- slpkg/main.py | 4 +++- slpkg/sbo/slackbuild.py | 11 ++++++++--- 5 files changed, 31 insertions(+), 12 deletions(-) diff --git a/man/slpkg.8 b/man/slpkg.8 index f9850178..3687a26f 100644 --- a/man/slpkg.8 +++ b/man/slpkg.8 @@ -41,7 +41,8 @@ Usage: slpkg [COMMANDS|OPTIONS] {repository|package...} [-l [repository], --index, --installed, --name] [-c [repository], --upgrade, --skip=[...], --resolve-off, --checklist] - [-s [repository] [package...], --resolve-off, --download-only, + [-s [repository] [package...], --rebuild, --reinstall, + --resolve-off, --download-only, --directory-prefix=[dir], --case-ins] [-t [repository] [package], --check-deps, --graph=[type], @@ -230,6 +231,10 @@ dependencies of the package. .PP Additional options: .PP +\fB--rebuild\fP : Rebuild packages from sbo repository. +.PP +\fB--reinstall\fP : Reinstall binary packages from repositories. +.PP \fB--resolve-off\fP : Switch off automatic resolve dependencies. .PP \fB--download-only\fP : Download packages without install. diff --git a/slpkg/arguments.py b/slpkg/arguments.py index 39fcac52..5d563857 100644 --- a/slpkg/arguments.py +++ b/slpkg/arguments.py @@ -114,8 +114,9 @@ Optional arguments: --checklist install with all dependencies. -s | --sync, [repository] [package...], Sync packages. Install packages - --resolve-off, --download-only, directly from remote repositories - --directory-prefix=[dir], with all dependencies. + --rebuild, --reinstall, directly from remote repositories + --resolve-off, --download-only, with all dependencies. + --directory-prefix=[dir], --case-ins -t | --tracking, [repository] [package], Tracking package dependencies and @@ -194,7 +195,8 @@ def usage(repo): [-l [repository], --index, --installed, --name] [-c [repository], --upgrade, --skip=[...], --resolve-off, --checklist] - [-s [repository] [package...], --resolve-off, --download-only, + [-s [repository] [package...], --rebuild, --reinstall, + --resolve-off, --download-only, --directory-prefix=[dir], --case-ins] [-t [repository] [package], --check-deps, --graph=[type], diff --git a/slpkg/binary/install.py b/slpkg/binary/install.py index 738fae22..c7d7654e 100644 --- a/slpkg/binary/install.py +++ b/slpkg/binary/install.py @@ -133,7 +133,8 @@ class BinaryInstall(object): self.not_downgrade(inst) is True): continue if (not os.path.isfile(self.meta.pkg_path + inst[:-4]) or - "--download-only" in self.flag): + "--download-only" in self.flag or + "--reinstall" in self.flag): Download(self.tmp_path, dwn.split(), self.repo).start() else: self.msg.template(78) @@ -160,7 +161,8 @@ class BinaryInstall(object): if (os.path.isfile(self.meta.pkg_path + inst[:-4]) and "--download-only" not in self.flag): count_inst += 1 - if count_inst == len(self.dep_install + self.install): + if (count_inst == len(self.dep_install + self.install) and + "--reinstall" not in self.flag): raise SystemExit() def case_insensitive(self): @@ -209,7 +211,10 @@ class BinaryInstall(object): print("[ {0}upgrading{1} ] --> {2}".format( self.meta.color["YELLOW"], self.meta.color["ENDC"], inst)) upgraded.append(pkg_ver) - PackageManager(package).upgrade("--install-new") + if "--reinstall" in self.flag: + PackageManager(package).upgrade("--reinstall") + else: + PackageManager(package).upgrade("--install-new") else: print("[ {0}installing{1} ] --> {2}".format( self.meta.color["GREEN"], self.meta.color["ENDC"], inst)) @@ -218,7 +223,7 @@ class BinaryInstall(object): return [installs, upgraded] def not_downgrade(self, package): - """Don't downgrade packages if sbo version is lower than + """Don't downgrade packages if repository version is lower than installed""" name = split_package(package)[0] rep_ver = split_package(package)[1] diff --git a/slpkg/main.py b/slpkg/main.py index f8533f6a..ccfe985d 100644 --- a/slpkg/main.py +++ b/slpkg/main.py @@ -342,7 +342,9 @@ class ArgParse(object): "--resolve-off", "--download-only", "--directory-prefix=", - "--case-ins" + "--case-ins", + "--rebuild", + "--reinstall" ] for arg in self.args: if arg.startswith(additional_options[2]): diff --git a/slpkg/sbo/slackbuild.py b/slpkg/sbo/slackbuild.py index 6d73cbb5..d4fe8cfb 100644 --- a/slpkg/sbo/slackbuild.py +++ b/slpkg/sbo/slackbuild.py @@ -177,7 +177,7 @@ class SBoInstall(object): """Continue to install ? """ if (self.count_uni > 0 or self.count_upg > 0 or - "--download-only" in self.flag): + "--download-only" in self.flag or "--rebuild" in self.flag): if self.master_packages and self.msg.answer() in ["y", "Y"]: installs, upgraded = self.build_install() if "--download-only" in self.flag: @@ -316,7 +316,8 @@ class SBoInstall(object): pkg = "-".join(prgnam.split("-")[:-1]) installed = "".join(find_package(prgnam, self.meta.pkg_path)) src_link = SBoGrep(pkg).source().split() - if installed and "--download-only" not in self.flag: + if (installed and "--download-only" not in self.flag and + "--rebuild" not in self.flag): self.msg.template(78) self.msg.pkg_found(prgnam) self.msg.template(78) @@ -350,7 +351,11 @@ class SBoInstall(object): self.meta.color["GREEN"], self.meta.color["ENDC"], prgnam)) installs.append(prgnam) - PackageManager(binary).upgrade(flag="--install-new") + if ("--rebuild" in self.flag and + GetFromInstalled(pkg).name() == pkg): + PackageManager(binary).upgrade(flag="--reinstall") + else: + PackageManager(binary).upgrade(flag="--install-new") return installs, upgraded def not_downgrade(self, prgnam):