Merge branch 'develop'

This commit is contained in:
Dimitris Zlatanidis 2022-06-02 15:39:15 +03:00
commit 6c957c937a
45 changed files with 419 additions and 1529 deletions

View file

@ -1,3 +1,10 @@
4.0.2 - 30/05/2022
Removed:
- Repositories rlw, mles, ktown, rested, slacke, slacky, slackl
- Option --directory-prefix
- Option --autobuild
- Option --network
4.0.1 - 30/05/2022
Added:
- SQLAlchemy Object Relational Mapper

View file

@ -21,13 +21,9 @@ $ slpkg update
Update repository [slack] ... Done
Update repository [sbo] ... Done
Update repository [alien] ... Done
Update repository [slacky] ... Done
Update repository [conrad] ... Done
Update repository [slonly] ... Done
Update repository [ktown] ... Done
Update repository [salix] ... Done
Update repository [slacke] ... Done
Update repository [slackl] ... Done
Update repository [multi] ... Done
Update repository [msb] ... Done
@ -35,7 +31,7 @@ Update repository [msb] ... Done
Update specifically repositories:
```
$ slpkg update --repositories=sbo,msb,slacky
$ slpkg update --repositories=sbo,msb
```
Also you can check ChangeLog.txt for changes, like:
@ -60,13 +56,11 @@ $ slpkg --check
+==============================================================================
slack No changes in ChangeLog.txt
sbo News in ChangeLog.txt
slacky News in ChangeLog.txt
alien No changes in ChangeLog.txt
rlw No changes in ChangeLog.txt
Summary
===============================================================================
From 5 repositories need 2 updating. Run the command 'slpkg update'.
From 3 repositories need 2 updating. Run the command 'slpkg update'.
```
Add and remove custom repositories:
@ -95,24 +89,18 @@ $ slpkg repo-list
| Repo id Repo URL Default Status
+==============================================================================
alien http://www.slackware.com/~alien/slackbuilds/ yes disabled
ktown http://alien.slackbook.org/ktown/ yes disabled
msb http://slackware.org.uk/msb/ yes enabled
multi http://www.slackware.com/~alien/multilib/ yes disabled
ponce http://ponce.cc/slackware/slackware64-14.2/packa~ no enabled
rested http://taper.alienbase.nl/mirrors/people/alien/r~ yes disabled
rlw http://rlworkman.net/pkgs/ yes disabled
salix http://download.salixos.org/ yes disabled
sbo http://slackbuilds.org/slackbuilds/ yes enabled
slack http://ftp.cc.uoc.gr/mirrors/linux/slackware/ yes enabled
slacke http://ngc891.blogdns.net/pub/ yes disabled
slackl http://www.slackel.gr/repo/ yes disabled
conrad http://slack.conraid.net/repository/slackware64-~ yes disabled
slacky http://repository.slacky.eu/ yes disabled
conrad http://slack.conraid.net/repository/slackware64-~ yes disabled
slonly https://slackonly.com/pub/packages/ yes disabled
Repositories summary
===============================================================================
3/14 enabled default repositories and 1 custom.
3/9 enabled default repositories and 1 custom.
For enable or disable default repositories edit '/etc/slpkg/repositories.conf'
file.
@ -477,7 +465,7 @@ will be upgraded.
Would you like to continue [y/N]?
$ slpkg -c slacky --upgrade
$ slpkg -c alien --upgrade
Checking... Done
Reading package lists... Done
Resolving dependencies... Done
@ -486,7 +474,7 @@ Resolving dependencies... Done
| Package New version Arch Build Repos Size
+==============================================================================
Upgrading:
gstreamer1-1.4.1 1.4.4 x86_64 1 slacky 1563 K
gstreamer1-1.4.1 1.4.4 x86_64 1 alien 1563 K
Installing summary
===============================================================================
@ -528,13 +516,12 @@ Would you like to continue [y/N]?
Upgrade only distribution:
```
$ slpkg -c slack --upgrade --skip="multi:*multilib*,ktown:*" // This upgrade
Checking... Done // distribution
// and skip all
Slackware64 'stable' v14.2 distribution is up to date // packages from
// ktown repository
// and multilib
// from multi.
$ slpkg -c slack --upgrade
Checking... Done
Slackware64 'stable' v14.2 distribution is up to date
```
Skip packages when upgrading:

View file

@ -1,5 +1,5 @@
***********
slpkg 4.0.1
slpkg 4.0.2
***********
Slpkg is a powerful software package manager that installs, updates, and removes packages on
@ -35,9 +35,9 @@ Install from the official third party `SBo repository <https://slackbuilds.org/r
.. code-block:: bash
$ wget slpkg-4.0.1.tar.gz
$ tar xvf slpkg-4.0.1.tar.gz
$ cd slpkg-4.0.1
$ wget slpkg-4.0.2.tar.gz
$ tar xvf slpkg-4.0.2.tar.gz
$ cd slpkg-4.0.2
$ ./install.sh
@ -54,8 +54,6 @@ Usage
Copyright
---------
Copyright 2014-2022 © Dimitris Zlatanidis.
Slackware® is a Registered Trademark of Patrick Volkerding.
Linux is a Registered Trademark of Linus Torvalds.
- Copyright 2014-2022 © Dimitris Zlatanidis.
- Slackware® is a Registered Trademark of Patrick Volkerding.
- Linux is a Registered Trademark of Linus Torvalds.

View file

@ -11,16 +11,9 @@ For the -current users who they use the sbo repository:
Slackware current is not supported, but as a general rule, the scripts
should work on it as well.
Rworkman's (rlw) repository use dependencies where displayed in a central site
'`http://rlworkman.net/pkgs/`' and only those. Unfortunately there is no fixed reference
dependencies in the file PACKAGES.TXT. You can make changes in '`/etc/slpkg/rlworkman.deps`'
file.
Conraid's (conrad) repository must be used only from Slackware64 current users and it has no
reference dependencies.
Slackel.gr (slackl) repository must be used only from Slackware{x86, x86_64} -current users.
MSB (msb) repository has one ChangeLog.txt file for three sub-repositories {1.14, 1.16, latest}.
So if you have updated the list of packages with the version 1.14 and you want to switch to
version 1.16 you must run '`slpkg upgrade`' instead of '`slpkg update`'. MSB (msb) repository
@ -30,11 +23,10 @@ MSB (msb) repository has one ChangeLog.txt file for three sub-repositories {1.14
Slonly repository don't support -current for x86 arch.
Alien's ktown (ktown), Alien's multilib (multi), Slacke E17 and E18, slack-n-free, csb,
mles and Alien's restricted repository has no reference dependencies.
Alien's multilib (multi), csb and Alien's restricted repository has no reference dependencie.
IMPORTANT: For Alien's (Eric Hameleers) repositories (alien, multi and ktown) should run
'`slpkg upgrade`' instant '`slpkg update`', if you want to spend from -stable in -current or
IMPORTANT: For Alien's (Eric Hameleers) repositories (alien and multi) should run
'`slpkg upgrade`' instant '`slpkg update`', if you want to pass from -stable in -current or
not, because there is no different file '`ChangeLog.txt`' for each version.

View file

@ -29,25 +29,17 @@
# repository.
#
# Default repositories names:
# sbo, slack, rlw, alien, slacky, conrad, slonly, ktown, multi, slacke, salix,
# slackl, rested, msb, csb, connos, mles
# sbo, slack, alien, conrad, slonly, multi, salix, msb, csb, connos
# NOTE: Slackware repository (slack) served from file slackware-mirros
# -----------------------------------------------------------------------------
#
# NAME URL
sbo http://slackbuilds.org/slackbuilds/
rlw http://slackware.uk/people/rlworkman/
alien http://bear.alienbase.nl/mirrors/people/alien/sbrepos/
slacky http://repository.slacky.eu/
conrad http://slack.conraid.net/repository/slackware64-current/
slonly https://slackonly.com/pub/packages/
ktown http://alien.slackbook.org/ktown/
multi http://bear.alienbase.nl/mirrors/people/alien/multilib/
slacke http://ngc891.blogdns.net/pub/
salix http://download.salixos.org/
slackl http://www.slackel.gr/repo/
rested http://bear.alienbase.nl/mirrors/people/alien/restricted_slackbuilds/
msb http://slackware.org.uk/msb/
csb http://slackware.uk/csb/
sbo https://slackbuilds.org/slackbuilds/
alien https://bear.alienbase.nl/mirrors/people/alien/sbrepos/
conrad https://slack.conraid.net/repository/slackware64-current/
slonly httpss://slackonly.com/pub/packages/
multi https://bear.alienbase.nl/mirrors/people/alien/multilib/
salix https://download.salixos.org/
msb https://slackware.uk/msb/
csb https://slackware.uk/csb/
connos https://connochaetos.org/slack-n-free/
mles http://slackware.uk/microlinux/

View file

@ -24,10 +24,7 @@
#
# ----------------------------------------------------------------------------
# conrad (Conraid's) repository must used from Slackware64 current.
# ktown (Alien"s ktown: 4.14.3 and latest) repository. Default ktown{latest}.
# slacke (Enlightenment: E17 and E18) repository. Default slacke{18}.
# msb (Mate: 1.14, 1.16, 1,18, latest) repository. Default msb{1.18}
# mles (Microlinux: desktop, extras, server) repository. Default mles{desktop}
# msb (Mate: 1,26, latest) repository. Default msb{1.26}
#
# Slackware ARM users will must use only two repositories at the moment slack and sbo.
#
@ -43,17 +40,10 @@
slack
sbo
# alien
# rlw
# slacky
# conrad
# slonly
# ktown{latest}
# multi
# slacke{18}
# salix
# slackl
# rested
# msb{1.18}
# msb{1.26}
# csb
# connos
# mles{desktop}

View file

@ -4,7 +4,7 @@ _slpkg()
cur=${COMP_WORDS[COMP_CWORD]}
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W "--autobuild --blacklist --queue --list --check --sync --tracking --print --network --FIND --find --installpkg --upgradepkg --removepkg --display" -- $cur ))
COMPREPLY=( $( compgen -W "--blacklist --queue --list --check --sync --tracking --print --FIND --find --installpkg --upgradepkg --removepkg --display" -- $cur ))
else
_filedir

View file

@ -1,6 +1,5 @@
complete --command slpkg --long-option help --short-option h --description 'Print this help message and exit.'
complete --command slpkg --long-option version --short-option v --description 'Print program version and exit.'
complete --command slpkg --long-option autobuild --short-option a --description 'Auto build SBo packages. If you already have downloaded the script and the source code you can build a new package with this command.'
complete --command slpkg --long-option blacklist --short-option b --description 'Manage packages in the blacklist. Add or remove packages and print the list. Each package is added here will not be accessible by the program.'
complete --command slpkg --long-option queue --short-option q --description 'Manage SBo packages in the queue. Add or remove and print the list build-install of packages. Build and then install the packages from the queue.'
complete --command slpkg --long-option config --short-option g --description 'Configuration file management. Print the configuration file or edit.'
@ -9,7 +8,6 @@ complete --command slpkg --long-option check --short-option c --description 'Che
complete --command slpkg --long-option sync --short-option s --description 'Sync packages. Install packages directly from remote repositories with all dependencies.'
complete --command slpkg --long-option tracking --short-option t --description 'Tracking package dependencies and print package dependenies tree with highlight if packages is installed.'
complete --command slpkg --long-option print --short-option p --description 'Print description of a package directly from the repository and change color text.'
complete --command slpkg --long-option network --short-option n --description 'View a standard of SBo page in terminal and manage multiple options like reading downloading building installation etc.'
complete --command slpkg --long-option find --short-option f --description 'Find and print installed packages reporting the size and the sum.'
complete --command slpkg --long-option FIND --short-option F --description 'Find packages from repositories and search at each enabled repository and prints results.'
complete --command slpkg --long-option installpkg --short-option i --description 'Installs single or multiple Slackware binary packages.'

View file

@ -206,8 +206,6 @@ Additional options:
.PP
\fB--download-only\fP : Download packages without install.
.PP
\fB--directory-prefix=[path/to/dir/]\fP : Download packages in specific directory.
.PP
\fB--case-ins\fP : Search package name in repository with case insensitive.
.PP
\fB--patches\fP : Switch to patches\ directory, only for slack repository.
@ -259,19 +257,6 @@ Additional options:
.PP
\fB--third-party\fP : View all the third-party packages.
.SS -n, --network, view SBo packages
\fBslpkg\fP \fB-n\fP <\fIname of package\fP>, <\fI[pattern], --checklist\fP>, \fB--case-ins\fP
.PP
View complete slackbuilds.org site in your terminal. Read file, download,
build or install etc. Use "--checklist" additional option to load all repository, example:
"# slpkg -n --checklist".
.PP
Additional options:
.PP
\fB--checklist\fP : Enable dialog utility and checklist option. (Require python3-pythondialog)
.PP
\fB--case-ins\fP : Search package name in repository with case insensitive.
.SS -i, --installpkg, install Slackware binary packages
\fBslpkg\fP \fB-i\fP \fB[--warn, --md5sum, --root /otherroot, --infobox, --menu, --terse,
--ask, --priority ADD|REC|OPT|SKP, --tagfile /somedir/tagfile]\fP <\fIpackages.t?z\fP>
@ -324,20 +309,13 @@ For example:
slackware.com = "slack"
SlackBuilds.org = "sbo"
Alien's = "alien"
slacky.eu = "slacky"
rworkman's = "rlw"
Conraid's = "conrad"
slackonly.com = "slonly"
Alien's ktown = "ktown{latest}"
Alien's multilib = "multi"
Slacke E17 and E18 = "slacke{18}"
SalixOS = "salix"
Slackel.gr = "slackel"
Alien's restricted = "rested"
MATE Desktop Environment = "msb{1.18}"
Cinnamon Desktop Environment = "csb"
Connochaetos slack-n-free = "connos"
Microlinux mles = "mles"
Default enable repository is "slack" and "sbo".
Add or remove default repository in configuration file "/etc/slpkg/repositories.conf".

View file

@ -379,10 +379,6 @@ options:</p>
: Download packages without install.</p>
<p style="margin-left:11%; margin-top: 1em"><b>--directory-prefix=[path/to/dir/]</b>
: Download packages in specific directory.</p>
<p style="margin-left:11%; margin-top: 1em"><b>--case-ins</b>
: Search package name in repository with case
insensitive.</p>
@ -474,29 +470,6 @@ options:</p>
<p style="margin-left:11%; margin-top: 1em"><b>--third-party</b>
: View all the third-party packages.</p>
<p style="margin-left:11%; margin-top: 1em"><b>-n,
--network, view SBo packages <br>
slpkg -n</b> &lt;<i>name of package</i>&gt;,
&lt;<i>[pattern], --checklist</i>&gt;, <b>--case-ins</b></p>
<p style="margin-left:11%; margin-top: 1em">View complete
slackbuilds.org site in your terminal. Read file, download,
build or install etc. Use &quot;--checklist&quot; additional
option to load all repository, example: &quot;# slpkg -n
--checklist&quot;.</p>
<p style="margin-left:11%; margin-top: 1em">Additional
options:</p>
<p style="margin-left:11%; margin-top: 1em"><b>--checklist</b>
: Enable dialog utility and checklist option. (Require
python3-pythondialog)</p>
<p style="margin-left:11%; margin-top: 1em"><b>--case-ins</b>
: Search package name in repository with case
insensitive.</p>
<p style="margin-left:11%; margin-top: 1em"><b>-i,
--installpkg, install Slackware binary packages <br>
@ -592,20 +565,13 @@ slpkg &minus;&minus;help</b> - display help for slpkg</p>
&quot;slack&quot; <br>
SlackBuilds.org = &quot;sbo&quot; <br>
Alien&rsquo;s = &quot;alien&quot; <br>
slacky.eu = &quot;slacky&quot; <br>
rworkman&rsquo;s = &quot;rlw&quot; <br>
Conraid&rsquo;s = &quot;conrad&quot; <br>
slackonly.com = &quot;slonly&quot; <br>
Alien&rsquo;s ktown = &quot;ktown{latest}&quot; <br>
Alien&rsquo;s multilib = &quot;multi&quot; <br>
Slacke E17 and E18 = &quot;slacke{18}&quot; <br>
SalixOS = &quot;salix&quot; <br>
Slackel.gr = &quot;slackel&quot; <br>
Alien&rsquo;s restricted = &quot;rested&quot; <br>
MATE Desktop Environment = &quot;msb{1.18}&quot; <br>
Cinnamon Desktop Environment = &quot;csb&quot; <br>
Connochaetos slack-n-free = &quot;connos&quot; <br>
Microlinux mles = &quot;mles&quot;</p>
<p style="margin-left:11%; margin-top: 1em">Default enable
repository is &quot;slack&quot; and &quot;sbo&quot;. <br>

View file

@ -77,7 +77,7 @@ class MetaData:
__all__ = "slpkg"
__author__ = "dslackw"
__version_info__ = (4, 0, 1)
__version_info__ = (4, 0, 2)
__version__ = "{0}.{1}.{2}".format(*__version_info__)
__license__ = "GNU General Public License v3 (GPLv3)"
__email__ = "d.zlatanidis@gmail.com"
@ -99,11 +99,8 @@ class MetaData:
"RELEASE": STABLE,
"SLACKWARE_VERSION": "off",
"COMP_ARCH": "off",
"REPOSITORIES": ["slack", "sbo", "rlw", "alien",
"slacky", "conrad", "slonly",
"ktown{latest}", "multi", "slacke{18}",
"salix", "slackl", "rested", "msb{1.18}",
"csb", "connos", "mles{desktop}"],
"REPOSITORIES": ["slack", "sbo", "alien", "conrad", "slonly",
"multi", "salix", "msb{1.26}", "csb", "connos"],
"BUILD_PATH": "/tmp/slpkg/build/",
"SBOSRCARCH": "off",
"SBOSRCARCH_LINK": "http://slackware.uk/sbosrcarch/by-name/",
@ -129,9 +126,9 @@ class MetaData:
"HTTP_PROXY": "",
}
default_repositories = ["slack", "sbo", "rlw", "alien", "slacky", "conrad",
"slonly", "ktown", "multi", "slacke", "salix",
"slackl", "rested", "msb", "csb", "connos", "mles"]
default_repositories = ["slack", "sbo", "alien", "conrad",
"slonly", "multi", "salix", "msb",
"csb", "connos"]
# reads values from the configuration file
repositories = []
@ -186,10 +183,7 @@ class MetaData:
slack_rel = select_slack_release(slack_rel)
# Grabs sub repositories
ktown_kde_repo = grab_sub_repo(repositories, "ktown")
slacke_sub_repo = grab_sub_repo(repositories, "slacke")
msb_sub_repo = grab_sub_repo(repositories, "msb")
mles_sub_repo = grab_sub_repo(repositories, "mles")
# removes no default repositories
repositories = list(remove_repositories(repositories,

View file

@ -85,12 +85,6 @@ Optional arguments:
-v | --version Print program version and exit.
-a | --autobuild, [script] [source...] Auto build SBo packages.
If you have already downloaded the
script and the source code you can
build a new package with this
command.
-b | --blacklist, [package...] --add, Manage packages in the blacklist.
--remove, list Add or remove packages and print
the list. Each package is added
@ -119,7 +113,6 @@ Optional arguments:
-s | --sync, [repository] [package...], Sync packages. Install packages
--rebuild, --reinstall, directly from remote repositories
--resolve-off, --download-only, with all dependencies.
--directory-prefix=[dir],
--case-ins, --patches
-t | --tracking, [repository] [package], Tracking package dependencies and
@ -133,11 +126,6 @@ Optional arguments:
--color=[] directly from the repository and
change color text.
-n | --network, [package], --checklist, View a standard of SBo page in
--case-ins terminal and manage multiple
options like reading, downloading,
building, installation, etc.
-F | --FIND, [package...], --case-ins Find packages from each enabled
repository and view results.
@ -190,7 +178,6 @@ def usage(repo, stderr):
Optional arguments:
[-h] [-v]
[-a [script] [sources...]]
[-b [package...] --add, --remove,
[list]]
[-q [package...] --add, --remove,
@ -201,12 +188,10 @@ def usage(repo, stderr):
--resolve-off, --checklist]
[-s [repository] [package...], --rebuild, --reinstall,
--resolve-off, --download-only,
--directory-prefix=[dir],
--case-ins, --patches]
[-t [repository] [package], --check-deps, --graph=[type],
--case-ins]
[-p [repository] [package], --color=[]]
[-n [SBo package], --checklist, --case-ins]
[-F [package...], --case-ins]
[-f [package...], --case-ins, --third-party]
[-i [options] [package...]]

View file

@ -31,8 +31,8 @@ from slpkg.__metadata__ import MetaData as _meta_
from slpkg.pkg.find import find_package
from slpkg.binary.greps import repo_data
from slpkg.binary.repo_init import RepoInit
from slpkg.binaries.queries import repo_data
from slpkg.binaries.repo_init import RepoInit
def pkg_upgrade(repo, skip, flag):

View file

@ -26,23 +26,23 @@ import sys
from functools import lru_cache
from slpkg.__metadata__ import MetaData as _meta_
from slpkg.binary.greps import Requires
from slpkg.blacklist import BlackList
from slpkg.binaries.queries import Requires
class Dependencies:
"""Resolving binary dependencies
"""
def __init__(self, repo, black):
def __init__(self, repo):
self.repo = repo
self.black = black
self.black = BlackList().get()
self.dep_results = []
self.meta = _meta_
def binary(self, name, flag):
def binary(self, name):
"""Builds all dependencies of a package
"""
if self.meta.rsl_deps in ["on", "ON"] and "--resolve-off" not in flag:
if self.meta.rsl_deps in ["on", "ON"]:
sys.setrecursionlimit(10000)
dependencies = []
requires = Requires(name, self.repo).get_deps()
@ -54,7 +54,7 @@ class Dependencies:
if req and req not in self.black:
dependencies.append(req)
self.deep_check(tuple(dependencies), tuple(flag))
self.deep_check(tuple(dependencies))
return self.dep_results
@ -62,9 +62,9 @@ class Dependencies:
return []
@lru_cache
def deep_check(self, dependencies, flag):
def deep_check(self, dependencies):
"""Checking if dependencies are finnished
"""
if dependencies:
self.dep_results.append(dependencies)
[self.binary(dep, flag) for dep in dependencies]
[self.binary(dep) for dep in dependencies]

View file

@ -43,12 +43,12 @@ from slpkg.pkg.find import find_package
from slpkg.pkg.manager import PackageManager
from slpkg.pkg.installed import GetFromInstalled
from slpkg.binary.greps import repo_data
from slpkg.binary.repo_init import RepoInit
from slpkg.binary.dependency import Dependencies
from slpkg.binaries.queries import repo_data
from slpkg.binaries.repo_init import RepoInit
from slpkg.binaries.dependency import Dependencies
class BinaryInstall(BlackList, Utils):
class BinaryInstall(Utils):
"""Installs binaries packages with all dependencies from
repository
"""
@ -67,7 +67,6 @@ class BinaryInstall(BlackList, Utils):
self.msg = Msg()
self.version = self.meta.slack_rel
self.tmp_path = self.meta.slpkg_tmp_packages
self.init_flags()
self.dwn, self.dep_dwn = [], []
self.install, self.dep_install = [], []
self.comp_sum, self.dep_comp_sum = [], []
@ -83,20 +82,9 @@ class BinaryInstall(BlackList, Utils):
for name in self.data[0]:
self.repo_pkg_names.append(split_package(name)[0])
self.blacklist = list(self.get_black())
self.blacklist = BlackList().get()
self.matching = False
def init_flags(self):
"""Flags initiliazation
"""
for fl in self.flag:
if fl.startswith("--directory-prefix="):
self.tmp_path = fl.split("=")[1]
if not self.tmp_path.endswith("/"):
self.tmp_path += "/"
def start(self, is_upgrade):
"""Installs packages from official Slackware distribution
"""
@ -105,6 +93,7 @@ class BinaryInstall(BlackList, Utils):
self.is_upgrade = is_upgrade
mas_sum = dep_sum = sums = 0, 0, 0, 0
self.msg.done()
self.dependencies = self.resolving_deps()
self.update_deps()
@ -237,12 +226,11 @@ class BinaryInstall(BlackList, Utils):
self.packages[index] = value
def update_deps(self):
"""Updates dependencies dictionary with all package
"""Updates dependencies dictionary with all packages
"""
for dep in self.dependencies:
deps = self.dimensional_list(Dependencies(
self.repo, self.blacklist).binary(
dep, self.flag))
self.repo).binary(dep))
self.deps_dict[dep] = deps
@ -251,7 +239,7 @@ class BinaryInstall(BlackList, Utils):
or if added to install two or more times
"""
packages = []
for mas in self.remove_dbs(self.packages):
for mas in self.packages:
if mas not in self.dependencies:
packages.append(mas)
@ -310,18 +298,24 @@ class BinaryInstall(BlackList, Utils):
"""
requires = []
if (self.meta.rsl_deps in ["on", "ON"] and
self.flag != "--resolve-off"):
self.msg.resolving()
if (self.meta.rsl_deps in ["off", "OFF"] and
"--resolve-off" not in self.flag):
return requires
self.msg.resolving()
for dep in self.packages:
dependencies = []
dependencies = self.dimensional_list(Dependencies(
self.repo, self.blacklist).binary(dep, self.flag))
requires += list(self._fix_deps_repos(dependencies))
self.deps_dict[dep] = self.remove_dbs(requires)
return self.remove_dbs(requires)
dependencies = []
dependencies = self.dimensional_list(Dependencies(
self.repo).binary(dep))
requires += list(self._fix_deps_repos(dependencies))
self.deps_dict[dep] = requires
return requires
def _fix_deps_repos(self, dependencies):
"""Fixes store deps include in the repository

152
slpkg/binaries/queries.py Normal file
View file

@ -0,0 +1,152 @@
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# greps.py file is part of slpkg.
# Copyright 2014-2022 Dimitris Zlatanidis <d.zlatanidis@gmail.com>
# All rights reserved.
# Slpkg is a user-friendly package manager for Slackware installations
# https://gitlab.com/dslackw/slpkg
# Slpkg is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from slpkg.utils import Utils
from slpkg.splitting import split_package
from slpkg.__metadata__ import MetaData as _meta_
from slpkg.slack.slack_version import slack_ver
from slpkg.models.models import AlienTable, session
class PkgQuery:
def __init__(self, name):
self.name = name
self.session = session
def location(self):
location = self.session.query(AlienTable).filter(
AlienTable.location == self.name).first()
return location[0]
def repo_data(PACKAGES_TXT, repo, flag):
"""Grabs data packages
"""
(name, location, size, unsize,
rname, rlocation, rsize, runsize) = ([] for i in range(8))
for line in PACKAGES_TXT.splitlines():
if line.startswith("PACKAGE NAME:"):
name.append(line[15:].strip())
if line.startswith("PACKAGE LOCATION:"):
location.append(line[21:].strip())
if line.startswith("PACKAGE SIZE (compressed):"):
size.append(line[28:-2].strip())
if line.startswith("PACKAGE SIZE (uncompressed):"):
unsize.append(line[30:-2].strip())
if repo == "slack" and "--upgrade" not in flag:
(rname,
rlocation,
rsize,
runsize
) = slack_filter(name, location, size, unsize, flag)
elif repo == "alien":
(rname,
rlocation,
rsize,
runsize
) = alien_filter(name, location, size, unsize)
else:
rname, rlocation, rsize, runsize = name, location, size, unsize
return [rname, rlocation, rsize, runsize]
def slack_filter(name, location, size, unsize, flag):
"""Slackware filter seperate packages from patches/ directory
"""
(fname, flocation, fsize, funsize) = ([] for i in range(4))
if "--patches" not in flag:
for n, l, s, u in zip(name, location, size, unsize):
if f"_slack{slack_ver()}" not in n:
fname.append(n)
flocation.append(l)
fsize.append(s)
funsize.append(u)
if "--patches" in flag:
for n, l, s, u in zip(name, location, size, unsize):
if f"_slack{slack_ver()}" in n:
fname.append(n)
flocation.append(l)
fsize.append(s)
funsize.append(u)
return [fname, flocation, fsize, funsize]
def alien_filter(name, location, size, unsize):
"""Fix to avoid packages include in slackbuilds folder
"""
(fname, flocation, fsize, funsize) = ([] for i in range(4))
for n, l, s, u in zip(name, location, size, unsize):
if "slackbuilds" != l:
fname.append(n)
flocation.append(l)
fsize.append(s)
funsize.append(u)
return [fname, flocation, fsize, funsize]
class Requires:
def __init__(self, name, repo):
self.name = name
self.repo = repo
def get_deps(self):
"""Grabs package requirements from repositories
"""
PACKAGES_TXT = Utils().read_file(f"{_meta_.lib_path}"
f"{self.repo}_repo/PACKAGES.TXT")
for line in PACKAGES_TXT.splitlines():
if line.startswith("PACKAGE NAME:"):
pkg_name = split_package(line[14:].strip())[0]
if line.startswith("PACKAGE REQUIRED:"):
if pkg_name == self.name:
if line[18:].strip():
return line.replace("PACKAGE REQUIRED:", "").split(",")

View file

@ -57,9 +57,6 @@ class RepoInit(Utils):
def _init_slack(self):
self.mirror = mirrors(name="", location="")
def _init_rlw(self):
self.mirror = f"{self.def_repo_dict}{slack_ver()}/"
def _init_alien(self):
ver = slack_ver()
arch = "x86"
@ -71,13 +68,6 @@ class RepoInit(Utils):
self.mirror = f"{self.def_repo_dict['alien']}{ver}/{arch}/"
def _init_slacky(self):
arch = ""
if self.meta.arch == "x86_64":
arch = "64"
self.mirror = f"{self.def_repo_dict}slackware{arch}-{slack_ver()}/"
def _init_conrad(self):
self.mirror = self.def_repo_dict["conrad"]
@ -97,9 +87,6 @@ class RepoInit(Utils):
self.mirror = f"{self.def_repo_dict['slonly']}{arch}/"
def _init_ktown(self):
self.mirror = self.def_repo_dict["ktown"]
def _init_multi(self):
ver = slack_ver()
if self.meta.slack_rel == "current":
@ -107,15 +94,6 @@ class RepoInit(Utils):
self.mirror = self.def_repo_dict["multi"] + ver + "/"
def _init_slacke(self):
arch = ""
if self.meta.arch == "x86_64":
arch = "64"
self.mirror = (f"{self.def_repo_dict['slacke']}"
f"slacke{self.meta.slacke_sub_repo[1:-1]}/slackware"
f"{arch}-{slack_ver()}/")
def _init_salix(self):
arch = "i486"
if self.meta.arch == "x86_64":
@ -123,16 +101,6 @@ class RepoInit(Utils):
self.mirror = f"{self.def_repo_dict['salix']}{arch}/{slack_ver()}/"
def _init_slackl(self):
arch = "i486"
if self.meta.arch == "x86_64":
arch = "x86_64"
self.mirror = f"{self.def_repo_dict['slackl']}{arch}/current/"
def _init_rested(self):
self.mirror = self.def_repo_dict["rested"]
def _init_msb(self):
arch = "x86"
if self.meta.arch == "x86_64":
@ -153,11 +121,3 @@ class RepoInit(Utils):
arch = "64"
self.mirror = (f"{self.def_repo_dict['connos']}slack-n-free"
f"{arch}-{slack_ver()}/")
def _init_mles(self):
arch = "32"
if self.meta.arch == "x86_64":
arch = "64"
self.mirror = (f"{self.def_repo_dict['mles']}"
f"{self.meta.mles_sub_repo[1:-1]}-"
f"{slack_ver()}-{arch}bit/")

View file

@ -37,7 +37,7 @@ def search_pkg(name, repo):
text = utils.read_file(_meta_.lib_path + f"{repo}_repo/PACKAGES.TXT")
PACKAGES_TXT = list(utils.package_name(text))
blacklist = list(black.get_black())
blacklist = black.get()
if name in PACKAGES_TXT and name not in blacklist:
return name

View file

@ -1,284 +0,0 @@
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# greps.py file is part of slpkg.
# Copyright 2014-2022 Dimitris Zlatanidis <d.zlatanidis@gmail.com>
# All rights reserved.
# Slpkg is a user-friendly package manager for Slackware installations
# https://gitlab.com/dslackw/slpkg
# Slpkg is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from functools import lru_cache
from slpkg.utils import Utils
from slpkg.splitting import split_package
from slpkg.__metadata__ import MetaData as _meta_
from slpkg.slack.slack_version import slack_ver
def repo_data(PACKAGES_TXT, repo, flag):
"""Grabs data packages
"""
(name, location, size, unsize,
rname, rlocation, rsize, runsize) = ([] for i in range(8))
for line in PACKAGES_TXT.splitlines():
if line.startswith("PACKAGE NAME:"):
name.append(line[15:].strip())
if line.startswith("PACKAGE LOCATION:"):
location.append(line[21:].strip())
if line.startswith("PACKAGE SIZE (compressed):"):
size.append(line[28:-2].strip())
if line.startswith("PACKAGE SIZE (uncompressed):"):
unsize.append(line[30:-2].strip())
if repo == "slack" and "--upgrade" not in flag:
(rname,
rlocation,
rsize,
runsize
) = slack_filter(name, location, size, unsize, flag)
elif repo == "rlw":
(rname,
rlocation,
rsize,
runsize
) = rlw_filter(name, location, size, unsize)
elif repo == "alien":
(rname,
rlocation,
rsize,
runsize
) = alien_filter(name, location, size, unsize)
elif repo == "rested":
(rname,
rlocation,
rsize,
runsize
) = rested_filter(name, location, size, unsize)
elif repo == "ktown":
(rname,
rlocation,
rsize,
runsize
) = ktown_filter(name, location, size, unsize)
else:
rname, rlocation, rsize, runsize = name, location, size, unsize
return [rname, rlocation, rsize, runsize]
def slack_filter(name, location, size, unsize, flag):
"""Slackware filter seperate packages from patches/ directory
"""
(fname, flocation, fsize, funsize) = ([] for i in range(4))
if "--patches" not in flag:
for n, l, s, u in zip(name, location, size, unsize):
if f"_slack{slack_ver()}" not in n:
fname.append(n)
flocation.append(l)
fsize.append(s)
funsize.append(u)
if "--patches" in flag:
for n, l, s, u in zip(name, location, size, unsize):
if f"_slack{slack_ver()}" in n:
fname.append(n)
flocation.append(l)
fsize.append(s)
funsize.append(u)
return [fname, flocation, fsize, funsize]
def rlw_filter(name, location, size, unsize):
"""Filter rlw repository data
"""
arch = _meta_.arch
if arch.startswith("i") and arch.endswith("86"):
arch = "i486"
(fname, flocation, fsize, funsize) = ([] for i in range(4))
for n, l, s, u in zip(name, location, size, unsize):
loc = l.split("/")
if arch == loc[-1]:
fname.append(n)
flocation.append(l)
fsize.append(s)
funsize.append(u)
return [fname, flocation, fsize, funsize]
def alien_filter(name, location, size, unsize):
"""Fix to avoid packages include in slackbuilds folder
"""
(fname, flocation, fsize, funsize) = ([] for i in range(4))
for n, l, s, u in zip(name, location, size, unsize):
if "slackbuilds" != l:
fname.append(n)
flocation.append(l)
fsize.append(s)
funsize.append(u)
return [fname, flocation, fsize, funsize]
def rested_filter(name, location, size, unsize):
"""Filter Alien"s repository data
"""
ver = slack_ver()
if _meta_.slack_rel == "current":
ver = "current"
path_pkg = "pkg"
if _meta_.arch == "x86_64":
path_pkg = "pkg64"
(fname, flocation, fsize, funsize) = ([] for i in range(4))
for n, l, s, u in zip(name, location, size, unsize):
if path_pkg == l.split("/")[-2] and ver == l.split("/")[-1]:
fname.append(n)
flocation.append(l)
fsize.append(s)
funsize.append(u)
return [fname, flocation, fsize, funsize]
def ktown_filter(name, location, size, unsize):
"""Filter Alien"s ktown repository data
"""
ver = slack_ver()
if _meta_.slack_rel == "current":
ver = "current"
path_pkg = "x86"
if _meta_.arch == "x86_64":
path_pkg = _meta_.arch
(fname, flocation, fsize, funsize) = ([] for i in range(4))
for n, l, s, u in zip(name, location, size, unsize):
if (path_pkg in l and _meta_.ktown_kde_repo[1:-1] in l and
l.startswith(ver)):
fname.append(n)
flocation.append(l)
fsize.append(s)
funsize.append(u)
return [fname, flocation, fsize, funsize]
class Requires:
def __init__(self, name, repo):
self.name = name
self.repo = repo
def get_deps(self):
"""Grabs package requirements from repositories
"""
if self.repo == "rlw":
dependencies = {}
rlw_deps = Utils().read_file(_meta_.conf_path + "rlworkman.deps")
for line in rlw_deps.splitlines():
if line and not line.startswith("#"):
pkgs = line.split(":")
dependencies[pkgs[0]] = pkgs[1]
if self.name in dependencies.keys():
return dependencies[self.name].split()
else:
return ""
else:
PACKAGES_TXT = Utils().read_file(f"{_meta_.lib_path}"
f"{self.repo}_repo/PACKAGES.TXT")
for line in PACKAGES_TXT.splitlines():
if line.startswith("PACKAGE NAME:"):
pkg_name = split_package(line[14:].strip())[0]
if line.startswith("PACKAGE REQUIRED:"):
if pkg_name == self.name:
if line[18:].strip():
return self._req_fix(line)
@lru_cache
def _req_fix(self, line):
"""Fix slacky and salix requirements because many dependencies
splitting with "," and others with "|"
"""
deps = []
for dep in line[18:].strip().split(","):
dep = dep.split("|")
if self.repo == "slacky":
if len(dep) > 1:
for d in dep:
deps.append(d.split()[0])
dep = "".join(dep)
deps.append(dep.split()[0])
else:
if len(dep) > 1:
for d in dep:
deps.append(d)
deps.append(dep[0])
return deps

View file

@ -43,7 +43,10 @@ class BlackList(Utils):
if os.path.isfile(self.blackfile):
self.black_conf = self.read_file(self.blackfile)
def get_black(self):
def get(self):
return list(self.black_list())
def black_list(self):
"""Return blacklist packages from /etc/slpkg/blacklist
configuration file."""
blacklist = list(self.black_filter())

View file

@ -46,21 +46,14 @@ class Updates:
self.all_repos = {
"slack": self._init.slack,
"sbo": self._init.sbo,
"rlw": self._init.rlw,
"alien": self._init.alien,
"slacky": self._init.slacky,
"conrad": self._init.conrad,
"slonly": self._init.slonly,
"ktown": self._init.ktown,
"multi": self._init.multi,
"slacke": self._init.slacke,
"salix": self._init.salix,
"slackl": self._init.slackl,
"rested": self._init.rested,
"msb": self._init.msb,
"csb": self._init.csb,
"connos": self._init.msb,
"mles": self._init.mles
}
def status_bar(self):

View file

@ -26,7 +26,7 @@ from slpkg.utils import Utils
from slpkg.messages import Msg
from slpkg.__metadata__ import MetaData as _meta_
from slpkg.sbo.greps import SBoGrep
from slpkg.sbo.queries import SboQuery
class PkgDesc(Utils):
@ -57,7 +57,7 @@ class PkgDesc(Utils):
description, count = "", 0
if self.repo == "sbo":
description = SBoGrep(self.name).description()
description = SboQuery(self.name).description()
else:
PACKAGES_TXT = self.read_file(self.lib)

View file

@ -34,7 +34,7 @@ from slpkg.__metadata__ import MetaData as _meta_
from slpkg.slack.mirrors import mirrors
from slpkg.slack.slack_version import slack_ver
from slpkg.models.models import SBoTable, session
from slpkg.models.models import SBoTable, AlienTable, session
class Init(Utils):
@ -195,36 +195,6 @@ class Init(Utils):
self.remote(log, ChangeLog_txt, lib, SLACKBUILDS_TXT, CHECKSUMS_MD5,
FILELIST_TXT, repo_name)
def rlw(self):
"""Creating rlw local library
"""
repo = self.def_repos_dict["rlw"]
log = self.log_path + "rlw/"
lib = self.lib_path + "rlw_repo/"
repo_name = Init.rlw.__name__
lib_file = "PACKAGES.TXT"
# lst_file = ""
md5_file = "CHECKSUMS.md5"
log_file = "ChangeLog.txt"
self.make_dir([log, lib])
PACKAGES_TXT = f"{repo}{self.slack_ver}/{lib_file}"
FILELIST_TXT = ""
CHECKSUMS_MD5 = f"{repo}{self.slack_ver}/{md5_file}"
ChangeLog_txt = f"{repo}{self.slack_ver}/{log_file}"
if self.check:
return self.checks_logs(log, ChangeLog_txt)
self.down(lib, PACKAGES_TXT, repo_name)
self.down(lib, CHECKSUMS_MD5, repo_name)
self.down(log, ChangeLog_txt, repo_name)
self.remote(log, ChangeLog_txt, lib, PACKAGES_TXT, CHECKSUMS_MD5,
FILELIST_TXT, repo_name)
def alien(self):
"""Creating alien local library
"""
@ -263,43 +233,8 @@ class Init(Utils):
self.remote(log, ChangeLog_txt, lib, PACKAGES_TXT, CHECKSUMS_MD5,
FILELIST_TXT, repo_name)
def slacky(self):
"""Creating slacky.eu local library
"""
ar = ""
repo = self.def_repos_dict["slacky"]
log = self.log_path + "slacky/"
lib = self.lib_path + "slacky_repo/"
repo_name = Init.slacky.__name__
lib_file = "PACKAGES.TXT"
# lst_file = ""
md5_file = "CHECKSUMS.md5"
log_file = "ChangeLog.txt"
self.make_dir([log, lib])
if self.arch == "x86_64":
ar = "64"
PACKAGES_TXT = f"{repo}slackware{ar}-{self.slack_ver}/{lib_file}"
FILELIST_TXT = ""
CHECKSUMS_MD5 = f"{repo}slackware{ar}-{self.slack_ver}/{md5_file}"
ChangeLog_txt = f"{repo}slackware{ar}-{self.slack_ver}/{log_file}"
if self.check:
return self.checks_logs(log, ChangeLog_txt)
self.down(lib, PACKAGES_TXT, repo_name)
self.down(lib, CHECKSUMS_MD5, repo_name)
self.down(log, ChangeLog_txt, repo_name)
self.remote(log, ChangeLog_txt, lib, PACKAGES_TXT, CHECKSUMS_MD5,
FILELIST_TXT, repo_name)
def conrad(self):
"""Creating slackers local library
"""Creating conrad local library
"""
repo = self.def_repos_dict["conrad"]
log = self.log_path + "conrad/"
@ -328,7 +263,7 @@ class Init(Utils):
FILELIST_TXT, repo_name)
def slonly(self):
"""Creating slackers local library
"""Creating slonly local library
"""
ar = f"{self.slack_ver}-x86"
repo = self.def_repos_dict["slonly"]
@ -367,36 +302,6 @@ class Init(Utils):
self.remote(log, ChangeLog_txt, lib, PACKAGES_TXT, CHECKSUMS_MD5,
FILELIST_TXT, repo_name)
def ktown(self):
"""Creating alien ktown local library
"""
repo = self.def_repos_dict["ktown"]
log = self.log_path + "ktown/"
lib = self.lib_path + "ktown_repo/"
repo_name = Init.ktown.__name__
lib_file = "PACKAGES.TXT"
# lst_file = ""
md5_file = "CHECKSUMS.md5"
log_file = "ChangeLog.txt"
self.make_dir([log, lib])
PACKAGES_TXT = f"{repo}{lib_file}"
FILELIST_TXT = ""
CHECKSUMS_MD5 = f"{repo}{md5_file}"
ChangeLog_txt = f"{repo}{log_file}"
if self.check:
return self.checks_logs(log, ChangeLog_txt)
self.down(lib, PACKAGES_TXT, repo_name)
self.down(lib, CHECKSUMS_MD5, repo_name)
self.down(log, ChangeLog_txt, repo_name)
self.remote(log, ChangeLog_txt, lib, PACKAGES_TXT, CHECKSUMS_MD5,
FILELIST_TXT, repo_name)
def multi(self):
"""Creating alien multilib local library
"""
@ -431,44 +336,6 @@ class Init(Utils):
self.remote(log, ChangeLog_txt, lib, PACKAGES_TXT, CHECKSUMS_MD5,
FILELIST_TXT, repo_name)
def slacke(self):
"""Creating Slacke local library
"""
ar = ""
repo = self.def_repos_dict["slacke"]
log = self.log_path + "slacke/"
lib = self.lib_path + "slacke_repo/"
repo_name = Init.slacke.__name__
lib_file = "PACKAGES.TXT"
# lst_file = ""
md5_file = "CHECKSUMS.md5"
log_file = "ChangeLog.txt"
self.make_dir([log, lib])
if self.arch == "x86_64":
ar = "64"
version = self.meta.slacke_sub_repo[1:-1]
PACKAGES_TXT = (f"{repo}slacke{version}/slackware{ar}-"
f"{self.slack_ver}/{lib_file}")
FILELIST_TXT = ""
CHECKSUMS_MD5 = (f"{repo}slacke{version}/slackware{ar}-"
f"{self.slack_ver}/{md5_file}")
ChangeLog_txt = (f"{repo}slacke{version}/slackware{ar}-"
f"{self.slack_ver}/{log_file}")
if self.check:
return self.checks_logs(log, ChangeLog_txt)
self.down(lib, PACKAGES_TXT, repo_name)
self.down(lib, CHECKSUMS_MD5, repo_name)
self.down(log, ChangeLog_txt, repo_name)
self.remote(log, ChangeLog_txt, lib, PACKAGES_TXT, CHECKSUMS_MD5,
FILELIST_TXT, repo_name)
def salix(self):
"""Creating SalixOS local library
"""
@ -503,70 +370,6 @@ class Init(Utils):
self.remote(log, ChangeLog_txt, lib, PACKAGES_TXT, CHECKSUMS_MD5,
FILELIST_TXT, repo_name)
def slackl(self):
"""Creating slackel.gr local library
"""
ar = "i486"
repo = self.def_repos_dict["slackl"]
log = self.log_path + "slackl/"
lib = self.lib_path + "slackl_repo/"
repo_name = Init.slackl.__name__
lib_file = "PACKAGES.TXT"
# lst_file = ""
md5_file = "CHECKSUMS.md5"
log_file = "ChangeLog.txt"
self.make_dir([log, lib])
if self.arch == "x86_64":
ar = "x86_64"
PACKAGES_TXT = f"{repo}{ar}/current/{lib_file}"
FILELIST_TXT = ""
CHECKSUMS_MD5 = f"{repo}{ar}/current/{md5_file}"
ChangeLog_txt = f"{repo}{ar}/current/{log_file}"
if self.check:
return self.checks_logs(log, ChangeLog_txt)
self.down(lib, PACKAGES_TXT, repo_name)
self.down(lib, CHECKSUMS_MD5, repo_name)
self.down(log, ChangeLog_txt, repo_name)
self.remote(log, ChangeLog_txt, lib, PACKAGES_TXT, CHECKSUMS_MD5,
FILELIST_TXT, repo_name)
def rested(self):
"""Creating alien restricted local library
"""
repo = self.def_repos_dict["rested"]
log = self.log_path + "rested/"
lib = self.lib_path + "rested_repo/"
repo_name = Init.rested.__name__
lib_file = "PACKAGES.TXT"
# lst_file = ""
md5_file = "CHECKSUMS.md5"
log_file = "ChangeLog.txt"
self.make_dir([log, lib])
PACKAGES_TXT = f"{repo}{lib_file}"
FILELIST_TXT = ""
CHECKSUMS_MD5 = f"{repo}{md5_file}"
ChangeLog_txt = f"{repo}{log_file}"
if self.check:
return self.checks_logs(log, ChangeLog_txt)
self.down(lib, PACKAGES_TXT, repo_name)
self.down(lib, CHECKSUMS_MD5, repo_name)
self.down(log, ChangeLog_txt, repo_name)
self.remote(log, ChangeLog_txt, lib, PACKAGES_TXT, CHECKSUMS_MD5,
FILELIST_TXT, repo_name)
def msb(self):
"""Creating MATE local library
"""
@ -679,41 +482,6 @@ class Init(Utils):
self.remote(log, ChangeLog_txt, lib, PACKAGES_TXT, CHECKSUMS_MD5,
FILELIST_TXT, repo_name)
def mles(self):
"""Creating Microlinux local library
"""
ar = "32"
repo = self.def_repos_dict["mles"]
log = self.log_path + "mles/"
lib = self.lib_path + "mles_repo/"
repo_name = Init.mles.__name__
lib_file = "PACKAGES.TXT"
# lst_file = ""
md5_file = "CHECKSUMS.md5"
log_file = "ChangeLog.txt"
self.make_dir([log, lib])
if self.arch == "x86_64":
ar = "64"
version = self.meta.mles_sub_repo[1:-1]
PACKAGES_TXT = f"{repo}{version}-{self.slack_ver}-{ar}bit/{lib_file}"
FILELIST_TXT = ""
CHECKSUMS_MD5 = f"{repo}{version}-{self.slack_ver}-{ar}bit/{md5_file}"
ChangeLog_txt = f"{repo}{version}-{self.slack_ver}-{ar}bit/{log_file}"
if self.check:
return self.checks_logs(log, ChangeLog_txt)
self.down(lib, PACKAGES_TXT, repo_name)
self.down(lib, CHECKSUMS_MD5, repo_name)
self.down(log, ChangeLog_txt, repo_name)
self.remote(log, ChangeLog_txt, lib, PACKAGES_TXT, CHECKSUMS_MD5,
FILELIST_TXT, repo_name)
def down(self, path, link, repo):
"""Downloads files
"""
@ -731,7 +499,6 @@ class Init(Utils):
CHECKSUMS_MD5 = args[4]
FILELIST_TXT = args[5]
repo = args[6]
if self.checks_logs(log_path, ChangeLog_txt):
# remove old files
self.file_remove(log_path, ChangeLog_txt.split("/")[-1])
@ -760,9 +527,7 @@ class Init(Utils):
self.down(lib_path, FILELIST_TXT, repo)
self.down(log_path, ChangeLog_txt, repo)
if repo == 'sbo':
self.session.query(SBoTable).delete() # delete all data
self.session.commit()
delete_table_data(repo)
def merge(self, path, outfile, infiles):
"""Merging files
@ -798,7 +563,6 @@ class Init(Utils):
if os.path.isfile(log_path + filename):
local = FileSize(log_path + filename).local()
if server != local:
return True
@ -846,10 +610,7 @@ class Upgrade:
update = Update()
update.run(repos)
def del_tables(self, repo):
if repo == 'sbo':
self.session.query(SBoTable).delete() # delete all data
self.session.commit()
delete_table_data(repo)
class Update:
@ -909,12 +670,25 @@ class Update:
if self.session.query(SBoTable).first() is None:
db.insert_sbo_table()
if self.session.query(AlienTable).first() is None:
db.insert_alien_table()
def done_msg(self, repo):
print(f"{self.grey}Checking repository "
f"[{self.cyan}{repo}{self.grey}] ... "
f"{self.endc}", end="", flush=True)
def delete_table_data(repo):
if repo == 'sbo':
session.query(SBoTable).delete()
session.commit()
if repo == 'alien':
session.query(AlienTable).delete()
session.commit()
def check_exists_repositories(repo):
"""Checking if repositories exists by PACKAGES.TXT file
"""

View file

@ -57,22 +57,21 @@ from slpkg.pkg.manager import PackageManager
from slpkg.sbo.queue import QueuePkgs
from slpkg.sbo.check import sbo_upgrade
from slpkg.sbo.network import SBoNetwork
from slpkg.sbo.autobuild import AutoBuild
from slpkg.sbo.slackbuild import SBoInstall
from slpkg.slack.patches import Patches
from slpkg.binary.check import pkg_upgrade
from slpkg.binary.install import BinaryInstall
from slpkg.binaries.check import pkg_upgrade
from slpkg.binaries.install import BinaryInstall
class ArgParse(BlackList):
class ArgParse:
def __init__(self, args):
super().__init__()
self.args = args
self.meta = _meta_
self.msg = Msg()
self.blacklist = BlackList().get()
self.commands = [
"update",
"upgrade",
@ -292,20 +291,6 @@ class ArgParse(BlackList):
else:
usage("", 1)
def auto_build(self):
"""Auto built tool
"""
options = [
"-a",
"--autobuild"
]
if len(self.args) >= 3 and self.args[0] in options:
AutoBuild(self.args[1], self.args[2:], self.meta.path).run()
else:
usage("", 1)
def pkg_list(self):
"""List of packages by repository
"""
@ -437,7 +422,6 @@ class ArgParse(BlackList):
additional_options = [
"--resolve-off",
"--download-only",
"--directory-prefix=",
"--case-ins",
"--rebuild",
"--reinstall",
@ -524,40 +508,6 @@ class ArgParse(BlackList):
else:
usage("", 1)
def sbo_network(self):
"""Views slackbuilds packages
"""
flag = []
options = [
"-n",
"--network"
]
additional_options = [
"--checklist",
"--case-ins"
]
for add in additional_options:
if add in self.args:
flag.append(add)
self.args.remove(add)
if "--checklist" in flag:
self.if_checklist()
if (len(self.args) == 2 and self.args[0] in options and
"sbo" in self.meta.repositories):
SBoNetwork(self.args[1], flag).view()
elif (len(self.args) == 1 and self.args[0] in options and
"sbo" in self.meta.repositories and
additional_options[0] in flag):
SBoNetwork("", flag).view()
else:
usage("sbo", 1)
def pkg_blacklist(self):
"""Manages blacklist packages
"""
@ -584,7 +534,7 @@ class ArgParse(BlackList):
elif (len(self.args) == 2 and self.args[0] in options and
flag[1] in self.args):
self.args.remove(flag[1])
self.black_remove(list(self.get_black()))
self.black_remove(self.blacklist)
elif (len(self.args) > 2 and self.args[0] in options and
flag[1] in self.args):
@ -998,8 +948,6 @@ def main():
"deps-status": argparse.command_deps_status,
"new-config": argparse.command_new_config,
"clean-tmp": argparse.command_clean_tmp,
"-a": argparse.auto_build,
"--autobuild": argparse.auto_build,
"-l": argparse.pkg_list,
"--list": argparse.pkg_list,
"-c": argparse.pkg_upgrade,
@ -1008,8 +956,6 @@ def main():
"--sync": argparse.pkg_install,
"-t": argparse.pkg_tracking,
"--tracking": argparse.pkg_tracking,
"-n": argparse.sbo_network,
"--netwotk": argparse.sbo_network,
"-b": argparse.pkg_blacklist,
"--blacklist": argparse.pkg_blacklist,
"-q": argparse.pkg_queue,

View file

@ -24,7 +24,7 @@
from progress.bar import Bar
from slpkg.__metadata__ import MetaData as _meta_
from slpkg.models.models import SBoTable, session
from slpkg.models.models import SBoTable, AlienTable, session
class Database:
@ -33,6 +33,21 @@ class Database:
self.lib_path = _meta_.lib_path
self.session = session
self.pkg_tags = [
"PACKAGE NAME:",
"PACKAGE LOCATION:",
"PACKAGE SIZE (compressed):",
"PACKAGE SIZE (uncompressed):",
"PACKAGE REQUIRED:",
"PACKAGE CONFLICTS:",
"PACKAGE SUGGESTS:",
"PACKAGE DESCRIPTION:"
]
def open_file(self, file):
with open(file, "r", encoding="utf-8") as f:
return f.readlines()
def insert_sbo_table(self):
"""Grabbing data line by line and inserting them into the database
"""
@ -65,7 +80,8 @@ class Database:
cache.append(line)
if (i % 11) == 0:
data = SBoTable(name=cache[0], location=cache[1],
data = SBoTable(name=cache[0],
location=cache[1].split('/')[1:-1][0],
files=cache[2], version=cache[3],
download=cache[4], download64=cache[5],
md5sum=cache[6], md5sum64=cache[7],
@ -79,6 +95,33 @@ class Database:
self.session.commit()
def open_file(self, file):
with open(file, "r", encoding="utf-8") as f:
return f.readlines()
def insert_alien_table(self):
pkg_file = self.open_file(f"{self.lib_path}alien_repo/PACKAGES.TXT")
bar = Bar("Creating alien database", max=len(pkg_file),
suffix="%(percent)d%% - %(eta)ds")
cache = [] # init cache
for i, line in enumerate(pkg_file, 1):
for p in self.pkg_tags:
if line.startswith(p):
line = line.replace(p, "").strip()
cache.append(line)
if (i % 20) == 0:
data = AlienTable(name=cache[0],
location=cache[1][2:],
comp_size=cache[2][:-2],
uncomp_size=cache[3][:-2],
required=cache[4], conflicts=cache[5],
suggests=cache[6], description=cache[7])
self.session.add(data)
cache = [] # reset cache after 11 lines
bar.next()
bar.finish()
self.session.commit()

View file

@ -55,4 +55,19 @@ class SBoTable(Base):
short_description = Column(Text)
class AlienTable(Base):
__tablename__ = "alientable"
id = Column(Integer, primary_key=True)
name = Column(Text)
location = Column(Text)
comp_size = Column(Integer)
uncomp_size = Column(Integer)
required = Column(Text)
conflicts = Column(Text)
suggests = Column(Text)
description = Column(Text)
Base.metadata.create_all(engine)

View file

@ -37,7 +37,7 @@ from slpkg.messages import Msg
from slpkg.checksum import check_md5
from slpkg.__metadata__ import MetaData as _meta_
from slpkg.sbo.greps import SBoGrep
from slpkg.sbo.queries import SboQuery
class BuildPackage(Utils):
@ -146,7 +146,7 @@ class BuildPackage(Utils):
"""
self.sbo_md5 = {}
md5_lists = SBoGrep(self.prgnam).checksum()
md5_lists = SboQuery(self.prgnam).checksum()
for src, md5 in itertools.zip_longest(self.sources, md5_lists):
self.sbo_md5[src] = md5

View file

@ -34,7 +34,7 @@ def searching(find_pkg, directory):
if os.path.isdir(directory):
installed = os.listdir(directory)
blacklist = list(black.get_black())
blacklist = black.get()
if os.path.exists(directory):

View file

@ -35,6 +35,7 @@ from slpkg.messages import Msg
from slpkg.dialog_box import DialogUtil
from slpkg.splitting import split_package
from slpkg.__metadata__ import MetaData as _meta_
from slpkg.sbo.queries import SboQuery
from slpkg.slack.slackware_repo import slackware_repository
@ -617,15 +618,13 @@ class PackageManager(Utils):
"""Grabs packages
"""
pkg_list, pkg_size = [], []
for line in packages.splitlines():
if repo == "sbo":
if repo == "sbo":
pkg_list = SboQuery(name="").names()
if line.startswith("SLACKBUILD NAME: "):
pkg_list.append(line[17:].strip())
pkg_size.append("0 K")
else:
else:
for line in packages.splitlines():
if line.startswith("PACKAGE NAME: "):
pkg_list.append(line[15:].strip())
@ -633,7 +632,7 @@ class PackageManager(Utils):
if line.startswith("PACKAGE SIZE (compressed): "):
pkg_size.append(line[26:].strip())
if repo == "alien" or repo == "ktown":
if repo == "alien":
return alien_filter(pkg_list, pkg_size)
return pkg_list, pkg_size
@ -649,7 +648,6 @@ class PackageManager(Utils):
self.meta.lib_path + "sbo_repo/SLACKBUILDS.TXT")):
packages = self.read_file(f"{self.meta.lib_path}"
"sbo_repo/SLACKBUILDS.TXT")
else:
if (os.path.isfile(

View file

@ -23,7 +23,7 @@
from slpkg.messages import Msg
from slpkg.sbo.greps import SBoGrep
from slpkg.sbo.queries import SboQuery
from slpkg.pkg.manager import PackageManager
from slpkg.__metadata__ import MetaData as _meta_
@ -91,6 +91,6 @@ class FindFromRepos:
ver = ""
if repo == "sbo":
ver = f"-{SBoGrep(find).version()}"
ver = f"-{SboQuery(find).version()}"
return ver

View file

@ -132,7 +132,7 @@ class RepoInfo(Utils):
if line.startswith("PACKAGE SIZE (uncompressed): "):
unsize.append(line[30:-2].strip())
if repo in ["salix", "slackl"]:
if repo == "salix":
log = self.read_file(
f"{self.meta.log_path}{repo}/ChangeLog.txt")

View file

@ -1,76 +0,0 @@
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# autobuild.py file is part of slpkg.
# Copyright 2014-2022 Dimitris Zlatanidis <d.zlatanidis@gmail.com>
# All rights reserved.
# Slpkg is a user-friendly package manager for Slackware installations
# https://gitlab.com/dslackw/slpkg
# Slpkg is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
from slpkg.pkg.build import BuildPackage
from slpkg.sbo.greps import SBoGrep
class AutoBuild:
"""Autobuild package if sources and script is already
downloaded
"""
def __init__(self, script, sources, path):
self.script = script
self.sources = sources
self.prgnam = self.script[:-7]
self.path = path
self.sbo_sources = []
def run(self):
"""Builds package and fix ordelist per checksum
"""
self.files_exist()
self.info_file()
sources = self.sources
if len(sources) > 1 and self.sbo_sources != sources:
sources = self.sbo_sources
# If the list does not have the same order uses from .info
# order.
BuildPackage(self.script, sources, self.path, auto=True).build()
raise SystemExit()
def info_file(self):
"""Grabs sources from .info file and stores filename
"""
sources = SBoGrep(self.prgnam).source().split()
for source in sources:
self.sbo_sources.append(source.split("/")[-1])
def files_exist(self):
"""Check if SlackBuild archive.tar.gz and sources exist
"""
if not os.path.isfile(self.path + self.script):
raise SystemExit("\nslpkg: Error: SlackBuild archive.tar.gz "
"not found\n")
for src in self.sources:
if not os.path.isfile(self.path + src):
raise SystemExit(f"\nslpkg: Error: Source file '{src}' "
f"not found\n")

View file

@ -31,7 +31,7 @@ from slpkg.splitting import split_package
from slpkg.upgrade_checklist import choose_upg
from slpkg.__metadata__ import MetaData as _meta_
from slpkg.sbo.greps import SBoGrep
from slpkg.sbo.queries import SboQuery
def sbo_upgrade(skip, flag):
@ -41,15 +41,15 @@ def sbo_upgrade(skip, flag):
black = BlackList()
msg.checking()
upgrade_names = []
data = SBoGrep(name="").names()
blacklist = list(black.get_black())
data = SboQuery(name="").names()
blacklist = black.get()
for pkg in sbo_list():
name = split_package(pkg)[0]
ver = split_package(pkg)[1]
if (name in data and name not in skip and name not in blacklist):
sbo_package = f"{name}-{SBoGrep(name).version()}"
sbo_package = f"{name}-{SboQuery(name).version()}"
package = f"{name}-{ver}"
if parse_version(sbo_package) > parse_version(package):

View file

@ -1,14 +1,15 @@
# Rworkman's dependencies:
#
# rlworkman.deps file is part of slpkg.
#
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# dependencies.py file is part of slpkg.
# Copyright 2014-2022 Dimitris Zlatanidis <d.zlatanidis@gmail.com>
# All rights reserved.
#
# Slpkg is a user-friendly package manager for Slackware installations.
#
# Slpkg is a user-friendly package manager for Slackware installations
# https://gitlab.com/dslackw/slpkg
#
# Slpkg is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
@ -19,17 +20,29 @@
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# END OF LEGAL NOTICE
#
# ----------------------------------------------------------------------------
# Some notes about package dependencies (all deps are also found here):
# Rworkman's repository dependencies as shown in the central page
# http://rlworkman.net/pkgs/
# ----------------------------------------------------------------------------
#
# PACKAGE: DEPENDENCIES
abiword: wv
claws-mail: libetpan
inkscape: lxml numpy BeautifulSoup
xfburn: libburn libisofs
from slpkg.sbo.queries import SboQuery
from slpkg.blacklist import BlackList
class Requires:
"""Creates a list of dependencies with
the right order to install"""
def __init__(self, name):
self.name = name
self.black = BlackList().get()
def sbo(self):
requires = SboQuery(self.name).requires()
for r in requires:
if r not in self.black and r != "%README%":
sub = SboQuery(r).requires()
for s in sub:
requires.append(s)
requires.reverse()
return list(dict.fromkeys(requires))

View file

@ -1,77 +0,0 @@
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# dependency.py file is part of slpkg.
# Copyright 2014-2022 Dimitris Zlatanidis <d.zlatanidis@gmail.com>
# All rights reserved.
# Slpkg is a user-friendly package manager for Slackware installations
# https://gitlab.com/dslackw/slpkg
# Slpkg is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import sys
from functools import lru_cache
from slpkg.blacklist import BlackList
from slpkg.__metadata__ import MetaData as _meta_
from slpkg.sbo.greps import SBoGrep
class Requires(BlackList):
"""Resolving SBo dependencies
"""
def __init__(self, flag):
super().__init__()
self.flag = flag
self.meta = _meta_
self.SLACKBUILDS_TXT = SBoGrep(name="").names()
self.blacklist = list(self.get_black())
self.dep_results = []
@lru_cache
def sbo(self, name):
"""Builds all dependencies of a package
"""
if (self.meta.rsl_deps in ["on", "ON"] and
"--resolve-off" not in self.flag):
sys.setrecursionlimit(10000)
dependencies = []
requires = SBoGrep(name).requires()
if requires:
for req in requires:
# avoids adding %README% as dependency and if
# requires in the blacklist
if "%README%" not in req and req not in self.blacklist:
dependencies.append(req)
self.deep_check(tuple(dependencies))
return self.dep_results
else:
return []
@lru_cache
def deep_check(self, dependencies):
"""Checking if dependencies are finished
"""
if dependencies:
self.dep_results.append(dependencies)
[self.sbo(dep) for dep in dependencies]

View file

@ -1,418 +0,0 @@
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# network.py file is part of slpkg.
# Copyright 2014-2022 Dimitris Zlatanidis <d.zlatanidis@gmail.com>
# All rights reserved.
# Slpkg is a user-friendly package manager for Slackware installations
# https://gitlab.com/dslackw/slpkg
# Slpkg is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
import pydoc
from slpkg.utils import Utils
from slpkg.messages import Msg
from slpkg.blacklist import BlackList
from slpkg.downloader import Download
from slpkg.remove import delete_folder
from slpkg.dialog_box import DialogUtil
from slpkg.security import pkg_security
from slpkg.__metadata__ import MetaData as _meta_
from slpkg.pkg.find import find_package
from slpkg.pkg.build import BuildPackage
from slpkg.pkg.manager import PackageManager
from slpkg.sbo.read import ReadSBo
from slpkg.sbo.greps import SBoGrep
from slpkg.sbo.sbo_arch import SBoArch
from slpkg.sbo.compressed import SBoLink
from slpkg.sbo.search import sbo_search_pkg
from slpkg.sbo.slack_find import slack_package
from slpkg.slack.slack_version import slack_ver
class SBoNetwork(BlackList, Utils):
"""View SBo site in the terminal and also read, build or
install packages
"""
def __init__(self, name, flag):
super().__init__()
self.name = name
self.flag = flag
self.meta = _meta_
self.msg = Msg()
self.data = SBoGrep(name="").names()
self.check_pkg_exist()
self.arch = SBoArch().get()
self.comp_tar = ".tar.gz"
self.choice = ""
self.FAULT = ""
self.green = self.meta.color["GREEN"]
self.red = self.meta.color["RED"]
self.yellow = self.meta.color["YELLOW"]
self.cyan = self.meta.color["CYAN"]
self.grey = self.meta.color["GREY"]
self.endc = self.meta.color["ENDC"]
self.build_folder = self.meta.build_path
self._SOURCES = self.meta.SBo_SOURCES
self.msg.reading()
self.case_insensitive()
if "--checklist" in self.flag:
self.with_checklist()
grep = SBoGrep(self.name)
self.sbo_files = grep.files()
self.sbo_url = sbo_search_pkg(self.name)
if self.sbo_url:
self.sbo_desc = grep.description()[len(self.name) + 2:-1]
self.source_dwn = grep.source().split()
self.sbo_req = grep.requires()
self.sbo_dwn = SBoLink(self.sbo_url).tar_gz()
self.sbo_version = grep.version()
self.dwn_srcs = self.sbo_dwn.split() + self.source_dwn
if "--checklist" not in self.flag or not self.sbo_url and self.name:
self.msg.done()
def check_pkg_exist(self):
if self.name not in self.data:
self.msg.pkg_not_found("\n", self.name, "can't find", "\n")
raise SystemExit(1)
def view(self):
"""View SlackBuild package, read or install them
from slackbuilds.org
"""
if self.sbo_url and self.name not in self.get_black():
self.prgnam = f"{self.name}-{self.sbo_version}"
self.view_sbo()
while True:
self.read_choice()
choice = {
"r": self.choice_README,
"R": self.choice_README,
"s": self.choice_SlackBuild,
"S": self.choice_SlackBuild,
"f": self.choice_info,
"F": self.choice_info,
"o": self.choice_doinst,
"O": self.choice_doinst,
"d": self.choice_download,
"D": self.choice_download,
"download": self.choice_download,
"b": self.choice_build,
"B": self.choice_build,
"build": self.choice_build,
"i": self.choice_install,
"I": self.choice_install,
"install": self.choice_install,
"c": self.choice_clear_screen,
"C": self.choice_clear_screen,
"clear": self.choice_clear_screen,
"q": self.choice_quit,
"quit": self.choice_quit,
"Q": self.choice_quit
}
try:
choice[self.choice]()
except KeyError:
pass
else:
self.msg.pkg_not_found("\n", self.name, "Can't view", "\n")
raise SystemExit(1)
def case_insensitive(self):
"""Matching packages distinguish between uppercase and
lowercase
"""
if "--case-ins" in self.flag:
data_dict = self.case_sensitive(self.data)
for key, value in data_dict.items():
if key == self.name.lower():
self.name = value
def read_choice(self):
"""Return choice
"""
commands = {
"r": "README",
"R": "README",
"s": f"{self.name}.SlackBuild",
"S": f"{self.name}.SlackBuild",
"f": f"{self.name}.info",
"F": f"{self.name}.info",
"o": "doinst.sh",
"O": "doinst.sh",
"d": "download",
"D": "download",
"download": "download",
"b": "build",
"B": "build",
"build": "build",
"i": "install",
"I": "install",
"install": "install",
"c": "clear",
"C": "clear",
"clear": "clear",
"q": "quit",
"quit": "quit",
"Q": "quit"
}
try:
message = " Choose an option > "
self.choice = input(f"{self.grey}{message}{self.endc}")
except EOFError:
raise SystemExit('\n')
try:
print("{0}\x1b[1A{1}{2}{3}\n".format(
" " * len(message), self.cyan, commands[self.choice],
self.endc), end="")
print(end="", flush=True)
except KeyError:
pass
def choice_README(self):
"""View README file
"""
README = ReadSBo(self.sbo_url).readme("README")
fill = self.fill_pager(README)
self.pager(README + fill)
def choice_SlackBuild(self):
"""View .SlackBuild file
"""
SlackBuild = ReadSBo(self.sbo_url).slackbuild(self.name, ".SlackBuild")
fill = self.fill_pager(SlackBuild)
self.pager(SlackBuild + fill)
def choice_info(self):
"""View .info file
"""
info = ReadSBo(self.sbo_url).info(self.name, ".info")
fill = self.fill_pager(info)
self.pager(info + fill)
def choice_doinst(self):
"""View doinst.sh file
"""
if "doinst.sh" in self.sbo_files.split():
doinst_sh = ReadSBo(self.sbo_url).doinst("doinst.sh")
fill = self.fill_pager(doinst_sh)
self.pager(doinst_sh + fill)
def choice_download(self):
"""Download script.tar.gz and sources
"""
Download(path="", url=self.dwn_srcs, repo="sbo").start()
raise SystemExit()
def choice_build(self):
"""Build package
"""
self.build()
delete_folder(self.build_folder)
raise SystemExit()
def choice_install(self):
"""Download, build and install the package
"""
pkg_security([self.name])
if not find_package(self.prgnam, self.meta.pkg_path):
self.build()
self.install()
delete_folder(self.build_folder)
raise SystemExit()
else:
self.msg.template(78)
self.msg.pkg_found(self.prgnam)
self.msg.template(78)
raise SystemExit()
def choice_clear_screen(self):
"""Clear screen
"""
os.system("clear")
self.view()
def choice_quit(self):
"""Quit from choices
"""
raise SystemExit()
def view_sbo(self):
"""View slackbuild.org
"""
sbo_url = self.sbo_url.replace("/slackbuilds/", "/repository/")
br1, br2, fix_sp = "", "", " "
if self.meta.use_colors in ["off", "OFF"]:
br1 = "("
br2 = ")"
fix_sp = ""
print() # new line at start
self.msg.template(78)
print(f"| {' ' * 28}{self.grey}SlackBuilds Repository{self.endc}")
self.msg.template(78)
print(f"| {slack_ver()} > {sbo_url.split('/')[-3].title()} > {self.cyan}{self.name}{self.endc}")
self.msg.template(78)
print(f"| {self.green}Package url{self.endc}: {sbo_url}")
self.msg.template(78)
print(f"| {self.green}Description: {self.endc}{self.sbo_desc}")
print(f"| {self.green}SlackBuild: {self.endc}{self.sbo_dwn.split('/')[-1]}")
print(f"| {self.green}Sources: {self.endc}{', '.join([src.split('/')[-1] for src in self.source_dwn])}")
print(f"| {self.yellow}Requirements: {self.endc}{', '.join(self.sbo_req)}")
self.msg.template(78)
print(f"| {self.red}R{self.endc}{br2}EADME View the README file")
print(f"| {self.red}S{self.endc}{br2}lackBuild View the .SlackBuild file")
print(f"| In{br1}{self.red}f{self.endc}{br2}o{fix_sp} View the .info file")
if "doinst.sh" in self.sbo_files.split():
print(f"| D{br1}{self.red}o{self.endc}{br2}inst.sh{fix_sp} View the doinst.sh file")
print(f"| {self.red}D{self.endc}{br2}ownload Download this package")
print(f"| {self.red}B{self.endc}{br2}uild Download and build")
print(f"| {self.red}I{self.endc}{br2}nstall Download/Build/Install")
print(f"| {self.red}C{self.endc}{br2}lear Clear screen")
print(f"| {self.red}Q{self.endc}{br2}uit Quit")
self.msg.template(78)
def with_checklist(self):
"""Using dialog and checklist option
"""
data = []
if not self.name:
data = self.data
else:
for name in self.data:
if self.name in name:
data.append(name)
if data:
text = "Press 'spacebar' to choose SlackBuild for view"
title = " SlackBuilds.org "
backtitle = f"{_meta_.__all__} {_meta_.__version__}"
status = False
pkg = DialogUtil(data, text, title, backtitle, status).checklist()
if pkg and len(pkg) > 1:
os.system("clear")
raise SystemExit("\nslpkg: Error: Choose only one package\n")
if pkg is None:
raise SystemExit(1)
self.name = "".join(pkg)
os.system("clear")
def pager(self, text):
"""Read text
"""
pydoc.pager(text)
def fill_pager(self, page):
"""Fixes pager spaces
"""
tty_size = os.popen("stty size", "r").read().split()
rows = int(tty_size[0]) - 1
lines = sum(1 for line in page.splitlines())
diff = rows - lines
fill = "\n" * diff
if diff > 0:
return fill
else:
return ""
def error_uns(self):
"""Checks if the package supported by an arch
before proceeding to install
"""
self.FAULT = ""
UNST = ["UNSUPPORTED", "UNTESTED"]
if "".join(self.source_dwn) in UNST:
self.FAULT = "".join(self.source_dwn)
def build(self):
"""Builds slackware package
"""
pkg_security([self.name])
self.error_uns()
if self.FAULT:
print()
self.msg.template(78)
print(f"| Package {self.prgnam} {self.red} {self.FAULT} "
f"{self.endc}")
self.msg.template(78)
else:
sources = []
if not os.path.exists(self.meta.build_path):
os.makedirs(self.meta.build_path)
if not os.path.exists(self._SOURCES):
os.makedirs(self._SOURCES)
os.chdir(self.meta.build_path)
Download(self.meta.build_path, self.sbo_dwn.split(),
repo="sbo").start()
Download(self._SOURCES, self.source_dwn, repo="sbo").start()
script = self.sbo_dwn.split("/")[-1]
for src in self.source_dwn:
sources.append(src.split("/")[-1])
BuildPackage(script, sources, self.meta.build_path,
auto=False).build()
slack_package(self.prgnam) # check if build
def install(self):
"""Installs SBo package found in /tmp directory.
"""
binary = slack_package(self.prgnam)
print(f"[ {self.green}Installing{self.endc} ] --> {self.name}")
PackageManager(binary).upgrade(flag="--install-new")

View file

@ -22,18 +22,16 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from slpkg.utils import Utils
from slpkg.__metadata__ import MetaData as _meta_
from slpkg.models.models import SBoTable, session
class SBoGrep(Utils):
class SboQuery:
"""Grabs data from sbo database
"""
def __init__(self, name):
self.name = name
self.meta = _meta_
self.db = self.meta.db
self.arch64 = "x86_64"
self.session = session

View file

@ -33,7 +33,7 @@ from slpkg.pkg.find import find_package
from slpkg.pkg.build import BuildPackage
from slpkg.pkg.manager import PackageManager
from slpkg.sbo.greps import SBoGrep
from slpkg.sbo.queries import SboQuery
from slpkg.sbo.compressed import SBoLink
from slpkg.sbo.search import sbo_search_pkg
from slpkg.sbo.slack_find import slack_package
@ -145,7 +145,7 @@ class QueuePkgs(Utils):
for pkg in packages:
if pkg not in SBoGrep(pkg).names():
if pkg not in SboQuery(pkg).names():
raise SystemExit(f"\nPackage '{pkg}' was not found in "
f"the SBo repository\n")
@ -157,7 +157,7 @@ class QueuePkgs(Utils):
sbo_url = sbo_search_pkg(pkg)
sbo_dwn = SBoLink(sbo_url).tar_gz()
source_dwn = SBoGrep(pkg).source().split()
source_dwn = SboQuery(pkg).source().split()
os.chdir(self.meta.build_path)
script = sbo_dwn.split("/")[-1]
@ -186,7 +186,7 @@ class QueuePkgs(Utils):
for pkg in packages:
ver = SBoGrep(pkg).version()
ver = SboQuery(pkg).version()
prgnam = f"{pkg}-{ver}"
if find_package(prgnam, self.meta.output):

View file

@ -38,4 +38,4 @@ def sbo_search_pkg(name):
sbo = repo.default_repository()["sbo"]
sbo_url = f"{sbo}{slack_ver()}/"
return f"{sbo_url}{location[0][2:]}/"
return f"{sbo_url}{location[0]}/{name}/"

View file

@ -39,15 +39,15 @@ from slpkg.pkg.build import BuildPackage
from slpkg.pkg.manager import PackageManager
from slpkg.pkg.installed import GetFromInstalled
from slpkg.sbo.greps import SBoGrep
from slpkg.sbo.queries import SboQuery
from slpkg.sbo.sbo_arch import SBoArch
from slpkg.sbo.compressed import SBoLink
from slpkg.sbo.dependency import Requires
from slpkg.sbo.search import sbo_search_pkg
from slpkg.sbo.dependencies import Requires
from slpkg.sbo.slack_find import slack_package
class SBoInstall(BlackList, Utils):
class SBoInstall(Utils):
"""Build and install SBo packages with all dependencies
"""
def __init__(self, slackbuilds, flag):
@ -65,7 +65,6 @@ class SBoInstall(BlackList, Utils):
self.arch = SBoArch().get()
self.build_folder = self.meta.build_path
self._SOURCES = self.meta.SBo_SOURCES
self.init_flags()
self.unst = ["UNSUPPORTED", "UNTESTED"]
self.master_packages = []
self.deps = []
@ -79,19 +78,8 @@ class SBoInstall(BlackList, Utils):
self.count_upg = 0
self.count_uni = 0
self.msg.reading()
self.data = SBoGrep(name="").names()
self.blacklist = list(self.get_black())
def init_flags(self):
"""Flags initialization
"""
for fl in self.flag:
if fl.startswith("--directory-prefix="):
self.build_folder = fl.split("=")[1]
if not self.build_folder.endswith("/"):
self.build_folder += "/"
self.data = SboQuery(name="").names()
self.blacklist = BlackList().get()
def start(self, is_upgrade):
"""Start view, build and install SBo packages
@ -103,33 +91,35 @@ class SBoInstall(BlackList, Utils):
for _sbo in self.slackbuilds:
if _sbo in self.data and _sbo not in self.blacklist:
sbo_deps = Requires(self.flag).sbo(_sbo)
sbo_deps = Requires(_sbo).sbo()
self.deps += sbo_deps
self.deps_dict[_sbo] = self.one_for_all(sbo_deps)
self.deps_dict[_sbo] = sbo_deps
self.package_found.append(_sbo)
else:
self.package_not_found.append(_sbo)
self.update_deps()
if not self.package_found:
self.match = True
self.matching()
self.master_packages, mas_src = self.sbo_version_source(
self.package_found)
self.msg.done()
if (self.meta.rsl_deps in ["on", "ON"] and
self.flag != "--resolve-off" and not self.match):
self.msg.resolving()
self.dependencies, dep_src = self.sbo_version_source(
self.one_for_all(self.deps))
self.dependencies, dep_src = self.sbo_version_source(self.deps)
if (self.meta.rsl_deps in ["on", "ON"] and
self.flag != "--resolve-off" and not self.match):
self.msg.done()
self.clear_masters()
if self.package_found:
@ -198,17 +188,6 @@ class SBoInstall(BlackList, Utils):
if key == name.lower():
self.slackbuilds[index] = value
def update_deps(self):
"""Update dependencies dictionary with all package
"""
onelist, dependencies = [], []
onelist = self.dimensional_list(self.deps)
dependencies = self.remove_dbs(onelist)
for dep in dependencies:
deps = Requires(self.flag).sbo(dep)
self.deps_dict[dep] = self.one_for_all(deps)
def continue_to_install(self):
"""Continue to install ?
"""
@ -235,7 +214,6 @@ class SBoInstall(BlackList, Utils):
"""Clear master slackbuilds if already exist in dependencies
or if added to install two or more times
"""
self.master_packages = self.remove_dbs(self.master_packages)
for mas in self.master_packages:
if mas in self.dependencies:
@ -257,9 +235,9 @@ class SBoInstall(BlackList, Utils):
sbo_versions, sources = [], []
for sbo in slackbuilds:
sbo_ver = f"{sbo}-{SBoGrep(sbo).version()}"
sbo_ver = f"{sbo}-{SboQuery(sbo).version()}"
sbo_versions.append(sbo_ver)
sources.append(SBoGrep(sbo).source())
sources.append(SboQuery(sbo).source())
return [sbo_versions, sources]
@ -376,7 +354,7 @@ class SBoInstall(BlackList, Utils):
pkg = "-".join(prgnam.split("-")[:-1])
installed = "".join(find_package(prgnam, self.meta.pkg_path))
src_link = SBoGrep(pkg).source().split()
src_link = SboQuery(pkg).source().split()
if (installed and "--download-only" not in self.flag and
"--rebuild" not in self.flag):

View file

@ -46,13 +46,13 @@ from slpkg.pkg.find import find_package
from slpkg.pkg.manager import PackageManager
from slpkg.pkg.installed import GetFromInstalled
from slpkg.binary.greps import repo_data
from slpkg.binaries.queries import repo_data
from slpkg.slack.mirrors import mirrors
from slpkg.slack.slack_version import slack_ver
class Patches(BlackList, Utils):
class Patches(Utils):
"""Upgrades distribution from the official Slackware mirrors
"""
def __init__(self, skip, flag):
@ -78,6 +78,7 @@ class Patches(BlackList, Utils):
self.comp_sum = []
self.uncomp_sum = []
self.msg.checking()
self.blacklist = BlackList().get()
if self.version == "stable":
self.PACKAGES_TXT = URL(mirrors("PACKAGES.TXT",
@ -153,7 +154,7 @@ class Patches(BlackList, Utils):
"""Stores and returns packages for upgrading
"""
data = repo_data(self.PACKAGES_TXT, "slack", self.flag)
black = list(self.get_black())
for name, loc, comp, uncomp in zip(data[0], data[1], data[2], data[3]):
repo_pkg_name = split_package(name)[0]
@ -162,7 +163,7 @@ class Patches(BlackList, Utils):
pkg_ver = split_package(name)[1]
if (GetFromInstalled(pkg_name).name() and
repo_pkg_name not in black and
repo_pkg_name not in self.blacklist and
repo_pkg_name not in self.skip and
parse_version(pkg_ver) > parse_version(
GetFromInstalled(pkg_name).version())):
@ -178,7 +179,7 @@ class Patches(BlackList, Utils):
self.count_upg -= 1
elif (not os.path.isfile(self.meta.pkg_path + name[:-4]) and
repo_pkg_name not in black and
repo_pkg_name not in self.blacklist and
repo_pkg_name not in self.skip):
self.dwn_links.append(f"{mirrors('', '')}{loc}/{name}")
self.comp_sum.append(comp)

View file

@ -23,7 +23,7 @@
from slpkg.utils import Utils
from slpkg.binary.greps import repo_data
from slpkg.binaries.queries import repo_data
from slpkg.splitting import split_package
from slpkg.__metadata__ import MetaData as _meta_

View file

@ -22,7 +22,6 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from slpkg.utils import Utils
from slpkg.graph import Graph
from slpkg.messages import Msg
from slpkg.blacklist import BlackList
@ -30,20 +29,21 @@ from slpkg.__metadata__ import MetaData as _meta_
from slpkg.pkg.find import find_package
from slpkg.sbo.greps import SBoGrep
from slpkg.sbo.dependency import Requires
from slpkg.sbo.queries import SboQuery
from slpkg.sbo.dependencies import Requires
from slpkg.sbo.search import sbo_search_pkg
from slpkg.binary.search import search_pkg
from slpkg.binary.dependency import Dependencies
from slpkg.binaries.search import search_pkg
from slpkg.binaries.dependency import Dependencies
class TrackingDeps(BlackList, Utils):
class TrackingDeps:
"""Views tree of dependencies and also
highlights packages with the colour green
if already installed and the colour red
if not installed.
"""
def __init__(self, name, repo, flag):
super().__init__()
self.name = name
@ -57,9 +57,8 @@ class TrackingDeps(BlackList, Utils):
self.red = self.meta.color["RED"]
self.endc = self.meta.color["ENDC"]
self.requires = []
self.dependencies = []
self.dependencies_list = []
self.deps_dict = {}
self.blacklist = BlackList()
self.init_flags()
def init_flags(self):
@ -78,9 +77,6 @@ class TrackingDeps(BlackList, Utils):
self.repositories()
if self.find_pkg:
self.dependencies_list.reverse()
self.requires = self.dimensional_list(self.dependencies_list)
self.dependencies = self.remove_dbs(self.requires)
if self.dependencies == []:
self.dependencies = ["No dependencies"]
@ -152,7 +148,7 @@ class TrackingDeps(BlackList, Utils):
self.find_pkg = sbo_search_pkg(self.name)
if self.find_pkg:
self.dependencies_list = Requires(self.flag).sbo(self.name)
self.dependencies = Requires(self.name).sbo()
else:
PACKAGES_TXT = self.read_file(
@ -162,8 +158,8 @@ class TrackingDeps(BlackList, Utils):
self.find_pkg = search_pkg(self.name, self.repo)
if self.find_pkg:
self.black = list(self.get_black())
self.dependencies_list = Dependencies(
self.black = list(self.blacklist.get())
self.dependencies = Dependencies(
self.repo, self.black).binary(self.name, self.flag)
def sbo_case_insensitive(self):
@ -171,7 +167,7 @@ class TrackingDeps(BlackList, Utils):
lowercase for sbo repository
"""
if "--case-ins" in self.flag:
data = SBoGrep(name="").names()
data = SboQuery(name="").names()
data_dict = self.case_sensitive(data)
for key, value in data_dict.items():
@ -219,7 +215,7 @@ class TrackingDeps(BlackList, Utils):
if self.repo == "sbo":
for dep in dependencies:
deps = Requires(flag="").sbo(dep)
deps = Requires(dep).sbo()
if dep not in self.deps_dict.values():
self.deps_dict[dep] = self.dimensional_list(deps)

View file

@ -23,7 +23,6 @@
import os
from collections import OrderedDict
from slpkg.splitting import split_package
@ -50,11 +49,6 @@ class Utils:
return one_list
def remove_dbs(self, double):
"""Removes double item from list
"""
return list(OrderedDict.fromkeys(double))
def read_file(self, registry):
"""Returns reading file
"""