From dae0bba7362af5267ff5b0e0d180e9cbc15cdf25 Mon Sep 17 00:00:00 2001 From: Dimitris Zlatanidis Date: Fri, 16 Jan 2015 22:55:28 +0200 Subject: [PATCH] update support multipages --- CHANGELOG | 8 ++++++++ README.rst | 2 +- man/slpkg.8 | 6 ++++-- slpkg/__metadata__.py | 14 ++++++++++++++ slpkg/others/dependency.py | 4 +++- slpkg/others/greps.py | 18 +++++++++--------- slpkg/others/install.py | 26 +++++++++++--------------- 7 files changed, 50 insertions(+), 28 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index ba14552e..8953e31b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,11 @@ +Version 2.2.1 +16-1-2015 + +[Feature] - Added support multipackages. + +[Updated] - Fix [key error] when you enter wrong repository as default. + + Version 2.2.0 08-1-2015 diff --git a/README.rst b/README.rst index f8bb6a8b..e633d0c8 100644 --- a/README.rst +++ b/README.rst @@ -229,7 +229,7 @@ Command Line Tool Usage .. code-block:: bash - Utility for easy management packages in Slackware + Slpkg is a user-friendly package manager for Slackware installations Commands: update update all package lists diff --git a/man/slpkg.8 b/man/slpkg.8 index db51142a..41f52e59 100644 --- a/man/slpkg.8 +++ b/man/slpkg.8 @@ -157,8 +157,10 @@ all repositories. .TP \fBslpkg\fP \fB-q\fP \fB--build\fP \fB--install\fP \fB--build-install\fP .PP -List, add, or remove sbo packages from queue. If you want to remove all the packages -from the list 'slpkg -q all --remove'. (these arguments only working for the sbo repository) +List, add, or remove sbo packages from queue. This argument is very useful if you want +to build and install multiple packages together. What to watch out for is the correct +order if there are dependencies. If you want to remove all the packages from the list +run '# slpkg -q all --remove'. (these arguments only working for the sbo repository) Build or install or build and install packages are queued. .SS -g , configuration file management diff --git a/slpkg/__metadata__.py b/slpkg/__metadata__.py index 3be07990..4e07c6c4 100644 --- a/slpkg/__metadata__.py +++ b/slpkg/__metadata__.py @@ -59,6 +59,17 @@ default_repositories = repositories[10] = 'slacke' default_repositories = repositories +def remove_repositories(repositories): + ''' + Remove no default repositories + ''' + repos = [] + for repo in repositories: + if repo in default_repositories: + repos.append(repo) + return repos + + def update_repositories(repositories): ''' Upadate with user custom repositories @@ -156,6 +167,9 @@ if os.path.isfile("/etc/slpkg/slpkg.conf"): ktown_kde_repo = ktown_repo(repositories) slacke_sub_repo = slacke_repo(repositories) +# remove no default repositories +repositories = remove_repositories(repositories) +# add custom repositories update_repositories(repositories) color = { diff --git a/slpkg/others/dependency.py b/slpkg/others/dependency.py index 2ccedff2..bafd57b5 100644 --- a/slpkg/others/dependency.py +++ b/slpkg/others/dependency.py @@ -24,6 +24,7 @@ import sys from slpkg.toolbar import status +from slpkg.blacklist import BlackList from greps import Requires @@ -40,13 +41,14 @@ class Dependencies(object): try: sys.setrecursionlimit(10000) dependencies = [] + blacklist = BlackList().packages() requires = Requires(name, repo).get_deps() toolbar_width, index = 2, 0 if requires: for req in requires: index += 1 toolbar_width = status(index, toolbar_width, 1) - if req: + if req and req not in blacklist: dependencies.append(req) if dependencies: self.dep_results.append(dependencies) diff --git a/slpkg/others/greps.py b/slpkg/others/greps.py index b32045db..16456ebd 100644 --- a/slpkg/others/greps.py +++ b/slpkg/others/greps.py @@ -37,20 +37,20 @@ def repo_data(PACKAGES_TXT, step, repo, version): ''' (name, location, size, unsize, rname, rlocation, rsize, runsize) = ([] for i in range(8)) - index, toolbar_width = 0, 700 + index, toolbar_width = 0, 100 for line in PACKAGES_TXT.splitlines(): index += 1 toolbar_width = status(index, toolbar_width, step) - if line.startswith("PACKAGE NAME"): + if line.startswith("PACKAGE NAME:"): if repo == "slackr": name.append(fix_slackers_pkg(line[15:])) else: name.append(line[15:].strip()) - if line.startswith("PACKAGE LOCATION"): + if line.startswith("PACKAGE LOCATION:"): location.append(line[21:].strip()) - if line.startswith("PACKAGE SIZE (compressed): "): + if line.startswith("PACKAGE SIZE (compressed):"): size.append(line[28:-2].strip()) - if line.startswith("PACKAGE SIZE (uncompressed): "): + if line.startswith("PACKAGE SIZE (uncompressed):"): unsize.append(line[30:-2].strip()) if repo == "rlw": (rname, @@ -206,11 +206,11 @@ class Requires(object): PACKAGES_TXT = f.read() f.close() for line in PACKAGES_TXT.splitlines(): - if line.startswith("PACKAGE NAME: "): - pkg_name = line[14:].strip().split('-')[0] - if line.startswith("PACKAGE REQUIRED: "): + if line.startswith("PACKAGE NAME:"): + pkg_name = line[13:].strip().split('-')[0] + if line.startswith("PACKAGE REQUIRED:"): if pkg_name == self.name: - if line[17:].strip(): + if line[16:].strip(): return self._req_fix(line) def _req_fix(self, line): diff --git a/slpkg/others/install.py b/slpkg/others/install.py index 200825a0..071a0255 100644 --- a/slpkg/others/install.py +++ b/slpkg/others/install.py @@ -72,7 +72,7 @@ class OthersInstall(object): sys.stdout.write("{0}Reading package lists ...{1}".format( color['GREY'], color['ENDC'])) sys.stdout.flush() - self.step = 700 + self.step = 800 * len(packages) if repo in default_repositories: exec('self._init_{0}()'.format(self.repo)) @@ -82,6 +82,8 @@ class OthersInstall(object): f = open(self.lib, "r") self.PACKAGES_TXT = f.read() f.close() + num_lines = sum(1 for line in self.PACKAGES_TXT) + self.step = num_lines / 1000 def _init_custom(self): self.lib = lib_path + "{0}_repo/PACKAGES.TXT".format(self.repo) @@ -94,7 +96,6 @@ class OthersInstall(object): def _init_alien(self): self.lib = lib_path + "alien_repo/PACKAGES.TXT" self.mirror = Repo().alien() - self.step = self.step * 2 def _init_slacky(self): self.lib = lib_path + "slacky_repo/PACKAGES.TXT" @@ -103,7 +104,6 @@ class OthersInstall(object): arch = "64" self.mirror = "{0}slackware{1}-{2}/".format(Repo().slacky(), arch, slack_ver()) - self.step = self.step * 2 def _init_studio(self): self.lib = lib_path + "studio_repo/PACKAGES.TXT" @@ -112,12 +112,10 @@ class OthersInstall(object): arch = "64" self.mirror = "{0}slackware{1}-{2}/".format(Repo().studioware(), arch, slack_ver()) - self.step = self.step * 2 def _init_slackr(self): self.lib = lib_path + "slackr_repo/PACKAGES.TXT" self.mirror = Repo().slackers() - self.step = self.step * 2 def _init_slonly(self): self.lib = lib_path + "slonly_repo/PACKAGES.TXT" @@ -125,17 +123,14 @@ class OthersInstall(object): if os.uname()[4] == "x86_64": arch = "{0}-x86_64".format(slack_ver()) self.mirror = "{0}{1}/".format(Repo().slackonly(), arch) - self.step = self.step * 3 def _init_ktown(self): self.lib = lib_path + "ktown_repo/PACKAGES.TXT" self.mirror = Repo().ktown() - self.step = self.step * 2 def _init_multi(self): self.lib = lib_path + "multi_repo/PACKAGES.TXT" self.mirror = Repo().multi() - self.step = self.step * 2 def _init_slacke(self): arch = "" @@ -146,7 +141,6 @@ class OthersInstall(object): self.lib = lib_path + "slacke_repo/PACKAGES.TXT" self.mirror = "{0}slacke{1}/slackware{2}-{3}/".format( Repo().slacke(), slacke_sub_repo[1:-1], arch, slack_ver()) - self.step = self.step * 2 def _init_salix(self): arch = "i486" @@ -154,7 +148,6 @@ class OthersInstall(object): arch = "x86_64" self.lib = lib_path + "salix_repo/PACKAGES.TXT" self.mirror = "{0}{1}/{2}/".format(Repo().salix(), arch, slack_ver()) - self.step = self.step * 2 def _init_slackl(self): arch = "i486" @@ -162,17 +155,16 @@ class OthersInstall(object): arch = "x86_64" self.lib = lib_path + "slackl_repo/PACKAGES.TXT" self.mirror = "{0}{1}/current/".format(Repo().slackel(), arch) - self.step = self.step * 2 def _init_rested(self): self.lib = lib_path + "rested_repo/PACKAGES.TXT" self.mirror = Repo().restricted() - self.step = self.step * 2 def start(self): ''' Install packages from official Slackware distribution ''' + mas_sum = dep_sum = pkg_sum = [0, 0, 0] (self.dwn, self.install, self.comp_sum, self.uncomp_sum) = self.store(self.packages) sys.stdout.write("{0}Done{1}\n".format(color['GREY'], color['ENDC'])) @@ -185,10 +177,14 @@ class OthersInstall(object): if self.install: self.top_view() print("Installing:") - self.views(self.install, self.comp_sum) + mas_sum = self.views(self.install, self.comp_sum) if dependencies: print("Installing for dependencies:") - self.views(self.dep_install, self.dep_comp_sum) + dep_sum = self.views(self.dep_install, self.dep_comp_sum) + pkg_sum = [sum(i) for i in zip(mas_sum, dep_sum)] + unit, size = units(self.comp_sum, self.uncomp_sum) + print unit, size + def resolving_deps(self): ''' @@ -263,7 +259,7 @@ class OthersInstall(object): for pkg in packages: for name, loc, comp, uncomp in zip(data[0], data[1], data[2], data[3]): - if name.startswith(pkg + "-") and pkg not in black: + if pkg in name and pkg not in black: dwn.append("{0}{1}/{2}".format(self.mirror, loc, name)) install.append(name) comp_sum.append(comp)