diff --git a/CHANGELOG b/CHANGELOG
index 4aa8e239..4607efdd 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,10 @@
+Version 1.8.2
+08-09-2014
+
+[Updated] - Fix resolving dependencies '-c sbo upgrade' option.
+ - Update sbo summarys
+[Feature] - Add build log file
+
Version 1.8.1
04-09-2014
diff --git a/PKG-INFO b/PKG-INFO
index 41134e90..91d4d2ca 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: slpkg
-Version: 1.8.1
+Version: 1.8.2
Author: dslackw
Author-email: d zlatanidis at gmail com
Maintainer: dslackw
diff --git a/README.rst b/README.rst
index 98eef26e..7e8e8c25 100644
--- a/README.rst
+++ b/README.rst
@@ -7,8 +7,12 @@
.. image:: https://raw.githubusercontent.com/dslackw/images/master/slpkg/logo.png
:target: https://github.com/dslackw/slpkg
-slpkg 1.8.1
-===========
+Latest Release:
+
+- Version: 1.8.2
+- `Package `_
+- `Source `_
+- `CHANGELOG `_
`Slpkg `_ is a terminal multitool in order to easy use `Slackware `_
packages.
@@ -72,8 +76,6 @@ Features
It's a quick and easy way to manage your packages in `Slackware `_
to a command.
-`[CHANGELOG] `_
-
Video Tutorial
==============
@@ -87,8 +89,8 @@ Untar the archive and run install.sh script:
.. code-block:: bash
- $ tar xvf slpkg-1.8.1.tar.gz
- $ cd slpkg-1.8.1
+ $ tar xvf slpkg-1.8.2.tar.gz
+ $ cd slpkg-1.8.2
$ ./install.sh
Using `pip `_ :
@@ -151,7 +153,8 @@ build and install with all dependencies :
$ slpkg -s sbo brasero
Building dependency tree...... Done
- The following packages will be automatically installed or upgraded with new version:
+ The following packages will be automatically installed or upgraded
+ with new version:
+==============================================================================
| Package Version Arch Repository
@@ -168,29 +171,10 @@ build and install with all dependencies :
Installing summary
===============================================================================
Total 6 packages.
- 6 packages will be installed, 0 allready installed.
+ 6 packages will be installed, 0 allready installed and 0 package
+ will be upgraded.
Do you want to continue [Y/n]? y
- .
- .
- .
- +==============================================================================
- | Installing new package /tmp/brasero-3.11.3-x86_64-1_SBo.tgz
- +==============================================================================
-
- Verifying package brasero-3.11.3-x86_64-1_SBo.tgz.
- Installing package brasero-3.11.3-x86_64-1_SBo.tgz:
- PACKAGE DESCRIPTION:
- # brasero (CD/DVD burning application)
- #
- # Brasero is a application to burn CD/DVD for the Gnome Desktop. It is
- # designed to be as simple as possible and has some unique features to
- # enable users to create their discs easily and quickly.
- #
- # Homepage: http://projects.gnome.org/brasero
- #
- Executing install script for brasero-3.11.3-x86_64-1_SBo.tgz.
- Package brasero-3.11.3-x86_64-1_SBo.tgz installed.
Find packages from `Slackware official mirrors `_
download and install:
@@ -269,7 +253,7 @@ Check if your packages is up to date from slackbuilds.org:
Installing summary
===============================================================================
- Total 8 packages will be upgraded.
+ Total 8 packages will be upgraded and 0 package will be installed.
Would you like to upgrade [Y/n]?
diff --git a/install.sh b/install.sh
index 4ce48a12..921fdb3a 100755
--- a/install.sh
+++ b/install.sh
@@ -21,7 +21,7 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PRGNAM=slpkg
-VERSION=${VERSION:-1.8.1}
+VERSION=${VERSION:-1.8.2}
TAG=${TAG:-_dsw}
cd ..
diff --git a/man/slpkg.8 b/man/slpkg.8
index 3fc08074..cd178231 100644
--- a/man/slpkg.8
+++ b/man/slpkg.8
@@ -170,7 +170,8 @@ $ \fBslpkg -s sbo brasero\fP
Installing summary
===============================================================================
Total 6 packages.
- 0 packages will be installed, 6 allready installed.
+ 2 packages will be installed, 3 allready installed and 1 packages
+ will be upgraded.
Do you want to continue [Y/n]? y
.
@@ -215,7 +216,7 @@ $ \fBslpkg -c sbo upgrade\fP
Installing summary
===============================================================================
- Total 8 packages will be upgraded.
+ Total 8 packages will be upgraded and 0 package will be installed.
Would you like to upgrade [Y/n]?
diff --git a/slackbuild/slpkg.SlackBuild b/slackbuild/slpkg.SlackBuild
index 67d8901f..89af1edc 100755
--- a/slackbuild/slpkg.SlackBuild
+++ b/slackbuild/slpkg.SlackBuild
@@ -23,7 +23,7 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PRGNAM=slpkg
-VERSION=${VERSION:-1.8.1}
+VERSION=${VERSION:-1.8.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_dsw}
diff --git a/slackbuild/slpkg.info b/slackbuild/slpkg.info
index ea5c0543..54d9aeea 100644
--- a/slackbuild/slpkg.info
+++ b/slackbuild/slpkg.info
@@ -1,7 +1,7 @@
PRGNAM="slpkg"
-VERSION="1.8.1"
+VERSION="1.8.2"
HOMEPAGE="https://github.com/dslackw/slpkg"
-DOWNLOAD="https://github.com/dslackw/slpkg/archive/v1.8.1.tar.gz"
+DOWNLOAD="https://github.com/dslackw/slpkg/archive/v1.8.2.tar.gz"
MD5SUM=""
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/slpkg/__metadata__.py b/slpkg/__metadata__.py
index 587df90f..4faabdca 100644
--- a/slpkg/__metadata__.py
+++ b/slpkg/__metadata__.py
@@ -26,7 +26,7 @@ import subprocess
__all__ = "slpkg"
__author__ = "dslackw"
-__version_info__ = (1, 8, 1)
+__version_info__ = (1, 8, 2)
__version__ = "{0}.{1}.{2}".format(*__version_info__)
__license__ = "GNU General Public License v3 (GPLv3)"
__email__ = "d.zlatanidis@gmail.com"
diff --git a/slpkg/messages.py b/slpkg/messages.py
index 46b3a520..7a05ec33 100755
--- a/slpkg/messages.py
+++ b/slpkg/messages.py
@@ -74,6 +74,11 @@ def s_user(user):
print("\nError: must have root privileges\n")
sys.exit()
+def build_FAILED(sbo_url, prgnam):
+ print("\n{0}<-- FAILED{1} to build the package {2}".format(colors.RED, colors.ENDC, prgnam))
+ print("See log file in slpkg_Build directory or read README file:")
+ print("{0}{1}\n".format(sbo_url, "README"))
+
def template(max):
'''
Print view template
diff --git a/slpkg/pkg/build.py b/slpkg/pkg/build.py
index 8e87b8e7..174fcd14 100755
--- a/slpkg/pkg/build.py
+++ b/slpkg/pkg/build.py
@@ -23,18 +23,31 @@
import os
import sys
+import time
import shutil
import tarfile
import subprocess
from slpkg.messages import pkg_not_found
+from slpkg.__metadata__ import log_path
def build_package(script, sources, path):
'''
- Build package from source
+ Build package from source and
+ create log file in path /var/log/slpkg/logs/
'''
prgnam = script.replace(".tar.gz", "")
+ log_file = ("build_{0}_log".format(prgnam))
+ logs = log_path + "logs/"
+ if not os.path.exists(log_path):
+ os.mkdir(log_path)
+ if not os.path.exists(logs):
+ os.mkdir(logs)
+ log_date = time.strftime("%c")
+ template = ("#" * 79 + "\n\n")
try:
+ if os.path.isfile(logs + log_file):
+ os.remove(logs + log_file)
tar = tarfile.open(script)
tar.extractall()
tar.close()
@@ -42,8 +55,21 @@ def build_package(script, sources, path):
shutil.copy2(src, prgnam)
os.chdir(path + prgnam)
subprocess.call("chmod +x {0}.SlackBuild".format(prgnam), shell=True)
- subprocess.call("./{0}.SlackBuild".format(prgnam), shell=True)
- os.chdir(path)
+ with open(logs + log_file, "w") as log: # write headers to log file
+ log.write(template)
+ log.write("File : " + log_file + "\n")
+ log.write("Path : " + logs + "\n")
+ log.write("Date : " + log_date + "\n\n")
+ log.write(template)
+ log.close()
+ with open(logs + log_file, "a") as log: # append END tag to a log file
+ log.write(template)
+ log.write(" " * 38 + "E N D\n\n")
+ log.write(template)
+ subprocess.Popen("./{0}.SlackBuild 2>&1 | tee -a {1}{2}".format(
+ prgnam, logs, log_file), shell=True, stdout=sys.stdout).communicate()
+ log.close()
+ os.chdir(path)
except (OSError, IOError):
message = "Wrong file"
pkg_not_found("\n", prgnam, message, "\n")
diff --git a/slpkg/pkg/manager.py b/slpkg/pkg/manager.py
index 78e086e7..1d3e47e6 100755
--- a/slpkg/pkg/manager.py
+++ b/slpkg/pkg/manager.py
@@ -53,7 +53,7 @@ def pkg_upgrade(binary):
for pkg in binary:
try:
print subprocess.check_output("upgradepkg --install-new {0}".format(pkg),
- shell=True)
+ shell=True)
except subprocess.CalledProcessError:
message = "Can't upgrade"
if len(binary) > 1:
@@ -69,7 +69,7 @@ def pkg_reinstall(binary):
for pkg in binary:
try:
print subprocess.check_output("upgradepkg --reinstall {0}".format(pkg),
- shell=True)
+ shell=True)
except subprocess.CalledProcessError:
message = "Can't reinstall"
if len(binary) > 1:
@@ -86,7 +86,7 @@ def pkg_remove(binary):
removed, dependencies = [], []
rmv_list, rmv_dependencies = [], []
print("\nPackages with name matching [ {0}{1}{2} ]\n".format(
- colors.CYAN, ', '.join(binary), colors.ENDC))
+ colors.CYAN, ", ".join(binary), colors.ENDC))
for pkg in binary:
pkgs = find_package(pkg + sp, pkg_path)
if pkgs:
@@ -175,7 +175,7 @@ def pkg_find(binary):
for pkg in binary:
if find_package(pkg + sp, pkg_path):
print(colors.GREEN + "[ installed ] - " + colors.ENDC + "\n ".join(
- find_package(pkg + sp, pkg_path)))
+ find_package(pkg + sp, pkg_path)))
else:
message = "Can't find"
pkg_not_found("", pkg, message, "")
@@ -217,7 +217,7 @@ def pkg_list(pattern):
print("{0}{1}:{2} {3}".format(colors.GREY, index, colors.ENDC, pkg))
if index == page:
key = raw_input("\nPress [ {0}Enter{1} ] >> Next page ".format(
- colors.CYAN, colors.ENDC))
+ colors.CYAN, colors.ENDC))
page += 50
print # new line at end
except KeyboardInterrupt:
diff --git a/slpkg/sbo/check.py b/slpkg/sbo/check.py
index 1c762447..415e31d9 100755
--- a/slpkg/sbo/check.py
+++ b/slpkg/sbo/check.py
@@ -30,13 +30,14 @@ from slpkg.pkg.build import build_package
from slpkg.pkg.manager import pkg_upgrade
from slpkg.colors import colors
-from slpkg.messages import template
from slpkg.functions import get_file
+from slpkg.messages import template, build_FAILED
from slpkg.__metadata__ import tmp, pkg_path, build_path
from init import initialization
from search import sbo_search_pkg
from download import sbo_slackbuild_dwn
+from dependency import sbo_dependencies_pkg
from greps import sbo_source_dwn, sbo_version_pkg
def sbo_check():
@@ -44,16 +45,19 @@ def sbo_check():
Upgrade all slackbuilds packages from slackbuilds.org
repository.
NOTE: This functions check packages by version not by build
- tag because build tag not reported the SLACKBUILDS.TXT file.
+ tag because build tag not reported the SLACKBUILDS.TXT file,
+ but install the package with maximum build tag if find the
+ some version in /tmp directory.
'''
try:
sys.stdout.write("Reading package lists ...")
sys.stdout.flush()
initialization()
- sbo_list = []
index, toolbar_width = 0, 3
- GREEN, RED, ENDC = colors.GREEN, colors.RED, colors.ENDC
+ dependencies, dependencies_list = [], []
+ requires, upgrade, installed, sbo_list = [], [], [], []
upg_name, pkg_for_upg, upg_ver, upg_arch = [], [], [], []
+ GREEN, RED, ENDC = colors.GREEN, colors.RED, colors.ENDC
for pkg in os.listdir(pkg_path):
if pkg.endswith("_SBo"):
sbo_list.append(pkg)
@@ -74,37 +78,117 @@ def sbo_check():
arch = "noarch"
else:
arch = os.uname()[4]
- name = pkg[:-(len(arch) + len("_SBo") + 3)]
- pkg_version = get_file(name, "-")[1:]
- name = name[:-(len(pkg_version) + 1)]
- sbo_version = sbo_version_pkg(name)
- if sbo_version > pkg_version:
- upg_name.append(name)
- pkg_for_upg.append("{0}-{1}".format(name, pkg_version))
- upg_ver.append(sbo_version)
- upg_arch.append(arch)
+ package = pkg[:-(len(arch) + len("_SBo") + 3)]
+ pkg_version = get_file(package, "-")[1:]
+ name = package[:-(len(pkg_version) + 1)]
+ if sbo_search_pkg(name):
+ # search packages if exists in the repository
+ # and it gets to avoidable modified packages
+ # from the user with the tag _SBo
+ sbo_package = ("{0}-{1}".format(name, sbo_version_pkg(name)))
+ if sbo_package > package:
+ upg_name.append(name)
sys.stdout.write("Done\n")
+ if upg_name:
+ sys.stdout.write("Resolving dependencies ...")
+ sys.stdout.flush()
+ '''
+ Of the packages found to need upgrading,
+ stored in a series such as reading from the
+ file .info.
+ '''
+ for upg in upg_name:
+ dependencies = sbo_dependencies_pkg(upg)
+ '''
+ Because there are dependencies that depend on other
+ dependencies are created lists into other lists.
+ Thus creating this loop create one-dimensional list.
+ '''
+ for dep in dependencies:
+ requires += dep
+ requires.reverse() # Inverting the list brings the
+ # dependencies in order to be installed.
+ '''
+ Many packages use the same dependencies, in this loop
+ creates a new list by removing duplicate dependencies but
+ without spoiling the line must be installed.
+ '''
+ for duplicate in requires:
+ if duplicate not in dependencies_list:
+ dependencies_list.append(duplicate)
+ '''
+ Last and after the list is created with the correct number
+ of dependencies that must be installed, and add the particular
+ packages that need to be upgraded if they are not already on
+ the list in end to list.
+ '''
+ for upg in upg_name:
+ if upg not in dependencies_list:
+ dependencies_list.append(upg)
+ '''
+ In the end lest a check of the packages that are on the list
+ are already installed.
+ '''
+ for pkg in dependencies_list:
+ ver = sbo_version_pkg(pkg)
+ prgnam = ("{0}-{1}".format(pkg, ver))
+ pkg_version = ver # if package not installed
+ # take version from repository
+ if find_package(prgnam, pkg_path) == []:
+ for sbo in os.listdir(pkg_path):
+ if sbo.startswith(pkg + "-") and sbo.endswith("_SBo"):
+ # search if packages installed
+ # if yes grab package name,
+ # version and arch
+ if "-x86_64-" in sbo:
+ arch = "x86_64"
+ elif "-i486-" in sbo:
+ arch = "i486"
+ elif "-arm-" in sbo:
+ arch = "arm"
+ elif "-noarch-" in sbo:
+ arch = "noarch"
+ else:
+ arch = os.uname()[4]
+ name = sbo[:-(len(arch) + len("_SBo") + 3)]
+ pkg_version = get_file(name, "-")[1:]
+ upgrade.append(pkg)
+ pkg_for_upg.append("{0}-{1}".format(pkg, pkg_version))
+ upg_ver.append(ver)
+ upg_arch.append(arch)
+ sys.stdout.write("Done\n")
if pkg_for_upg:
print("\nThese packages need upgrading:\n")
template(78)
print "| Package", " " * 27, "New version", " " * 5, "Arch", " " * 7, "Repository"
template(78)
print("Upgrading:")
+ count_upgraded, count_installed = 0, 0
for upg, ver, arch in zip(pkg_for_upg, upg_ver, upg_arch):
- print " " , RED + upg + ENDC, " " * (34-len(upg)), GREEN + ver + ENDC, \
+ if find_package(upg[:-len(ver)], pkg_path):
+ COLOR = colors.YELLOW
+ count_upgraded += 1
+ else:
+ COLOR = colors.RED
+ count_installed += 1
+ print " " , COLOR + upg + ENDC, " " * (34-len(upg)), GREEN + ver + ENDC, \
" " * (16-len(ver)), arch, " " * (11-len(arch)), "SBo"
- msg_pkg = "package"
- if len(pkg_for_upg) > 1:
- msg_pkg = msg_pkg + "s"
+ msg_upg = "package"
+ msg_ins = msg_upg
+ if count_upgraded > 1:
+ msg_upg = msg_upg + "s"
+ if count_installed > 1:
+ msg_ins = msg_ins + "s"
print("\nInstalling summary")
print("=" * 79)
- print("Total {0} {1} will be upgraded.\n".format(len(pkg_for_upg), msg_pkg))
+ print("Total {0} {1} will be upgraded and {2} {3} will be installed.\n".format(
+ count_upgraded, msg_upg, count_installed, msg_ins))
read = raw_input("Would you like to upgrade [Y/n]? ")
if read == "Y" or read == "y":
if not os.path.exists(build_path):
os.mkdir(build_path)
os.chdir(build_path)
- for name, version, arch in zip(upg_name, upg_ver, upg_arch):
+ for name, version in zip(upgrade, upg_ver):
prgnam = ("{0}-{1}".format(name, version))
sbo_url = sbo_search_pkg(name)
sbo_dwn = sbo_slackbuild_dwn(sbo_url)
@@ -117,7 +201,6 @@ def sbo_check():
subprocess.call("wget -N {0}".format(src), shell=True)
sources.append(get_file(src, "/"))
build_package(script, sources, build_path)
- print("{0}[ Upgrading ] --> {1}{2}".format(GREEN, ENDC, name))
'''
Searches the package name and version in /tmp to install.
If find two or more packages e.g. to build tag
@@ -127,21 +210,36 @@ def sbo_check():
for search in find_package(prgnam, tmp):
if "_SBo" in search:
binary_list.append(search)
- binary = (tmp + max(binary_list)).split()
+ try:
+ binary = (tmp + max(binary_list)).split()
+ except ValueError:
+ build_FAILED(sbo_url, prgnam)
+ sys.exit()
+ if find_package(name, pkg_path):
+ print("{0}[ Upgrading ] --> {1}{2}".format(GREEN, ENDC, name))
+ else:
+ print("{0}[ Installing ] --> {1}{2}".format(GREEN, ENDC, name))
+ # Use this list to pick out what
+ # packages will be installed
+ installed.append(name)
pkg_upgrade(binary)
print("Complete!\n")
if len(pkg_for_upg) > 1:
template(78)
- print("| Total {0} {1} upgraded".format(len(pkg_for_upg), msg_pkg))
+ print("| Total {0} {1} upgraded and {2} {3} installed".format(
+ count_upgraded, msg_upg, count_installed, msg_ins))
template(78)
- for pkg, upg, ver in zip(pkg_for_upg, upg_name, upg_ver):
+ for pkg, upg, ver in zip(pkg_for_upg, upgrade, upg_ver):
upgraded = ("{0}-{1}".format(upg, ver))
if find_package(upgraded, pkg_path):
- print("| Package {0} upgraded with new package {1}-{2}".format(
- pkg, upg, ver))
+ if upg in installed:
+ print("| Package {0} installed".format(pkg))
+ else:
+ print("| Package {0} upgraded with new package {1}-{2}".format(
+ pkg, upg, ver))
template(78)
else:
- print("\nTotal {0} SBo packages are up to date:\n".format(len(sbo_list)))
+ print("\nTotal {0} SBo packages are up to date\n".format(len(sbo_list)))
else:
sys.stdout.write("Done\n")
print("\nNo SBo packages found\n")
diff --git a/slpkg/sbo/greps.py b/slpkg/sbo/greps.py
index f40180ff..5aac0c61 100755
--- a/slpkg/sbo/greps.py
+++ b/slpkg/sbo/greps.py
@@ -25,7 +25,6 @@ import os
from slpkg.url_read import url_read
from slpkg.__metadata__ import arch, lib_path
-
from search import sbo_search_pkg
def sbo_source_dwn(name):
diff --git a/slpkg/sbo/slackbuild.py b/slpkg/sbo/slackbuild.py
index 3d28e937..585bc3cb 100755
--- a/slpkg/sbo/slackbuild.py
+++ b/slpkg/sbo/slackbuild.py
@@ -27,8 +27,8 @@ import subprocess
from slpkg.colors import colors
from slpkg.functions import get_file
-from slpkg.messages import pkg_not_found, pkg_found, template
from slpkg.__metadata__ import tmp, pkg_path, build_path, log_path, sp
+from slpkg.messages import pkg_not_found, pkg_found, template, build_FAILED
from slpkg.pkg.find import find_package
from slpkg.pkg.build import build_package
@@ -52,10 +52,10 @@ def sbo_build(name):
dependencies_list = sbo_dependencies_pkg(name)
try:
if dependencies_list is not None:
- pkg_sum = 0
+ pkg_sum, count_upgraded, count_installed = 0, 0, 0
arch = os.uname()[4]
sbo_ver, pkg_arch = [], []
- installs, versions = [], []
+ installs, upgraded, versions = [], [], []
requires, dependencies = [], []
PKG_COLOR, DEP_COLOR, ARCH_COLOR = "", "", ""
ENDC = colors.ENDC
@@ -101,7 +101,6 @@ def sbo_build(name):
sbo_pkg = ("{0}-{1}".format(pkg, version))
if find_package(sbo_pkg, pkg_path):
pkg_sum += 1
-
sys.stdout.write("Done\n")
'''
Tag with color green if package already installed
@@ -112,8 +111,12 @@ def sbo_build(name):
master_pkg = ("{0}-{1}".format(name, sbo_ver[-1]))
if find_package(master_pkg, pkg_path):
PKG_COLOR = colors.GREEN
+ elif find_package(name + sp, pkg_path):
+ PKG_COLOR = colors.YELLOW
+ count_upgraded += 1
else:
PKG_COLOR = colors.RED
+ count_installed += 1
if "UNSUPPORTED" in pkg_arch[-1]:
ARCH_COLOR = colors.RED
elif "UNTESTED" in pkg_arch[-1]:
@@ -134,8 +137,12 @@ def sbo_build(name):
dep_pkg = ("{0}-{1}".format(dep, ver))
if find_package(dep_pkg, pkg_path):
DEP_COLOR = colors.GREEN
+ elif find_package(dep + sp, pkg_path):
+ DEP_COLOR = colors.YELLOW
+ count_upgraded += 1
else:
DEP_COLOR = colors.RED
+ count_installed += 1
if "UNSUPPORTED" in dep_arch:
ARCH_COLOR = colors.RED
elif "UNTESTED" in dep_arch:
@@ -144,17 +151,18 @@ def sbo_build(name):
" " * (38-len(dep)), ver, \
" " * (14-len(ver)), ARCH_COLOR + dep_arch + ENDC, \
" " * (9-len(dep_arch)), "SBo"
- msg_pkg = "package"
- msg_2_pkg = msg_pkg
- if len(dependencies) > 1:
- msg_pkg = msg_pkg + "s"
- if len(dependencies) - pkg_sum > 1:
- msg_2_pkg = msg_2_pkg + "s"
+ msg_ins = "package"
+ msg_upg = msg_ins
+ if count_installed > 1:
+ msg_ins = msg_ins + "s"
+ if msg_upg > 1:
+ msg_upg = msg_upg + "s"
print("\nInstalling summary")
print("=" * 79)
- print("Total {0} {1}.".format(len(dependencies), msg_pkg))
- print("{0} {1} will be installed, {2} allready installed.".format(
- (len(dependencies) - pkg_sum), msg_2_pkg, pkg_sum))
+ print("Total {0} {1}.".format(len(dependencies), msg_ins))
+ print("{0} {1} will be installed, {2} allready installed and {3} {4}".format(
+ count_installed, msg_ins, pkg_sum, count_upgraded, msg_upg))
+ print("will be upgraded.")
'''
Check if package supported by arch
before proceed to install
@@ -170,11 +178,15 @@ def sbo_build(name):
if not os.path.exists(build_path):
os.mkdir(build_path)
os.chdir(build_path)
- for pkg, ver in zip(dependencies, sbo_ver):
- sbo_file = "".join(find_package(pkg, pkg_path))
- sbo_file_version = sbo_file[len(pkg) + 1:-len(arch) - 7]
- if ver > sbo_file_version:
- prgnam = ("{0}-{1}".format(pkg, ver))
+ for pkg, ver, ar in zip(dependencies, sbo_ver, pkg_arch):
+ prgnam = ("{0}-{1}".format(pkg, ver))
+ sbo_file = "".join(find_package(prgnam, pkg_path))
+ if sbo_file:
+ sbo_file_version = sbo_file[len(pkg) + 1:-len(ar) - 7]
+ template(78)
+ pkg_found(pkg, sbo_file_version)
+ template(78)
+ else:
sbo_url = sbo_search_pkg(pkg)
sbo_link = sbo_slackbuild_dwn(sbo_url)
src_link = sbo_source_dwn(pkg).split()
@@ -186,8 +198,6 @@ def sbo_build(name):
subprocess.call("wget -N {0}".format(src), shell=True)
sources.append(get_file(src, "/"))
build_package(script, sources, build_path)
- print("{0}[ Installing ] --> {1}{2}".format(
- colors.GREEN, ENDC, pkg))
'''
Searches the package name and version in /tmp to install.
If find two or more packages e.g. to build tag
@@ -197,26 +207,38 @@ def sbo_build(name):
for search in find_package(prgnam, tmp):
if "_SBo" in search:
binary_list.append(search)
- binary = (tmp + max(binary_list)).split()
+ try:
+ binary = (tmp + max(binary_list)).split()
+ except ValueError:
+ build_FAILED(sbo_url, prgnam)
+ sys.exit()
+ if find_package(pkg, pkg_path):
+ print("{0}[ Upgrading ] --> {1}{2}".format(
+ colors.GREEN, ENDC, pkg))
+ upgraded.append(pkg)
+ else:
+ print("{0}[ Installing ] --> {1}{2}".format(
+ colors.GREEN, ENDC, pkg))
pkg_upgrade(binary)
print("Complete!\n")
installs.append(pkg)
versions.append(ver)
- else:
- template(78)
- pkg_found(pkg, sbo_file_version)
- template(78)
'''
- Reference list only packages installed
+ Reference list with packages installed
+ and upgraded.
'''
if len(installs) > 1:
template(78)
- print("| Total {0} packages installed".format(len(installs)))
+ print("| Total {0} {1} installed and {2} {3} upgraded".format(
+ count_installed, msg_ins, count_upgraded, msg_upg))
template(78)
for pkg, ver in zip(installs, versions):
installed = ("{0}-{1}".format(pkg, ver))
if find_package(installed, pkg_path):
- print("| Package {0} installed successfully".format(installed))
+ if pkg in upgraded:
+ print("| Package {0} upgraded successfully".format(installed))
+ else:
+ print("| Package {0} installed successfully".format(installed))
else:
print("| Package {0} NOT installed".format(installed))
template(78)
diff --git a/slpkg/sbo/views.py b/slpkg/sbo/views.py
index 216dd813..84acad9e 100755
--- a/slpkg/sbo/views.py
+++ b/slpkg/sbo/views.py
@@ -27,8 +27,8 @@ import subprocess
from slpkg.colors import colors
from slpkg.functions import get_file
-from slpkg.messages import pkg_not_found, pkg_found, view_sbo, template
from slpkg.__metadata__ import tmp, build_path, pkg_path, slpkg_tmp, sp
+from slpkg.messages import pkg_not_found, pkg_found, view_sbo, template, build_FAILED
from slpkg.pkg.build import build_package
from slpkg.pkg.find import find_package
@@ -131,7 +131,6 @@ def sbo_network(name):
subprocess.call("wget -N {0}".format(src), shell=True)
sources.append(get_file(src, "/"))
build_package(script, sources, build_path)
- print("{0}[ Installing ] --> {1}{2}".format(colors.GREEN, colors.ENDC, name))
'''
Searches the package name and version in /tmp to install.
If find two or more packages e.g. to build tag
@@ -141,7 +140,12 @@ def sbo_network(name):
for search in find_package(prgnam, tmp):
if "_SBo" in search:
binary_list.append(search)
- binary = (tmp + max(binary_list)).split()
+ try:
+ binary = (tmp + max(binary_list)).split()
+ except ValueError:
+ build_FAILED(sbo_url, prgnam)
+ sys.exit()
+ print("{0}[ Installing ] --> {1}{2}".format(colors.GREEN, colors.ENDC, name))
pkg_upgrade(binary)
print("Complete!\n")
break
diff --git a/slpkg/slack/patches.py b/slpkg/slack/patches.py
index 8dd788a3..f596fb84 100755
--- a/slpkg/slack/patches.py
+++ b/slpkg/slack/patches.py
@@ -30,7 +30,7 @@ from slpkg.colors import colors
from slpkg.url_read import url_read
from slpkg.messages import template
from slpkg.__metadata__ import (pkg_path, slpkg_tmp,
- slack_archs)
+ slack_archs)
from slpkg.pkg.manager import pkg_upgrade