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 4.0.1 - 30/05/2022
Added: Added:
- SQLAlchemy Object Relational Mapper - SQLAlchemy Object Relational Mapper

View file

@ -21,13 +21,9 @@ $ slpkg update
Update repository [slack] ... Done Update repository [slack] ... Done
Update repository [sbo] ... Done Update repository [sbo] ... Done
Update repository [alien] ... Done Update repository [alien] ... Done
Update repository [slacky] ... Done
Update repository [conrad] ... Done Update repository [conrad] ... Done
Update repository [slonly] ... Done Update repository [slonly] ... Done
Update repository [ktown] ... Done
Update repository [salix] ... Done Update repository [salix] ... Done
Update repository [slacke] ... Done
Update repository [slackl] ... Done
Update repository [multi] ... Done Update repository [multi] ... Done
Update repository [msb] ... Done Update repository [msb] ... Done
@ -35,7 +31,7 @@ Update repository [msb] ... Done
Update specifically repositories: Update specifically repositories:
``` ```
$ slpkg update --repositories=sbo,msb,slacky $ slpkg update --repositories=sbo,msb
``` ```
Also you can check ChangeLog.txt for changes, like: Also you can check ChangeLog.txt for changes, like:
@ -60,13 +56,11 @@ $ slpkg --check
+============================================================================== +==============================================================================
slack No changes in ChangeLog.txt slack No changes in ChangeLog.txt
sbo News in ChangeLog.txt sbo News in ChangeLog.txt
slacky News in ChangeLog.txt
alien No changes in ChangeLog.txt alien No changes in ChangeLog.txt
rlw No changes in ChangeLog.txt
Summary 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: Add and remove custom repositories:
@ -95,24 +89,18 @@ $ slpkg repo-list
| Repo id Repo URL Default Status | Repo id Repo URL Default Status
+============================================================================== +==============================================================================
alien http://www.slackware.com/~alien/slackbuilds/ yes disabled 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 msb http://slackware.org.uk/msb/ yes enabled
multi http://www.slackware.com/~alien/multilib/ yes disabled multi http://www.slackware.com/~alien/multilib/ yes disabled
ponce http://ponce.cc/slackware/slackware64-14.2/packa~ no enabled 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 salix http://download.salixos.org/ yes disabled
sbo http://slackbuilds.org/slackbuilds/ yes enabled sbo http://slackbuilds.org/slackbuilds/ yes enabled
slack http://ftp.cc.uoc.gr/mirrors/linux/slackware/ yes enabled slack http://ftp.cc.uoc.gr/mirrors/linux/slackware/ yes enabled
slacke http://ngc891.blogdns.net/pub/ yes disabled conrad http://slack.conraid.net/repository/slackware64-~ 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
slonly https://slackonly.com/pub/packages/ yes disabled slonly https://slackonly.com/pub/packages/ yes disabled
Repositories summary 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' For enable or disable default repositories edit '/etc/slpkg/repositories.conf'
file. file.
@ -477,7 +465,7 @@ will be upgraded.
Would you like to continue [y/N]? Would you like to continue [y/N]?
$ slpkg -c slacky --upgrade $ slpkg -c alien --upgrade
Checking... Done Checking... Done
Reading package lists... Done Reading package lists... Done
Resolving dependencies... Done Resolving dependencies... Done
@ -486,7 +474,7 @@ Resolving dependencies... Done
| Package New version Arch Build Repos Size | Package New version Arch Build Repos Size
+============================================================================== +==============================================================================
Upgrading: 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 Installing summary
=============================================================================== ===============================================================================
@ -528,13 +516,12 @@ Would you like to continue [y/N]?
Upgrade only distribution: Upgrade only distribution:
``` ```
$ slpkg -c slack --upgrade --skip="multi:*multilib*,ktown:*" // This upgrade $ slpkg -c slack --upgrade
Checking... Done // distribution Checking... Done
// and skip all
Slackware64 'stable' v14.2 distribution is up to date // packages from Slackware64 'stable' v14.2 distribution is up to date
// ktown repository
// and multilib
// from multi.
``` ```
Skip packages when upgrading: 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 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 .. code-block:: bash
$ wget slpkg-4.0.1.tar.gz $ wget slpkg-4.0.2.tar.gz
$ tar xvf slpkg-4.0.1.tar.gz $ tar xvf slpkg-4.0.2.tar.gz
$ cd slpkg-4.0.1 $ cd slpkg-4.0.2
$ ./install.sh $ ./install.sh
@ -54,8 +54,6 @@ Usage
Copyright Copyright
--------- ---------
Copyright 2014-2022 © Dimitris Zlatanidis. - Copyright 2014-2022 © Dimitris Zlatanidis.
- Slackware® is a Registered Trademark of Patrick Volkerding.
Slackware® is a Registered Trademark of Patrick Volkerding. - Linux is a Registered Trademark of Linus Torvalds.
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 Slackware current is not supported, but as a general rule, the scripts
should work on it as well. 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 Conraid's (conrad) repository must be used only from Slackware64 current users and it has no
reference dependencies. 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}. 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 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 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. 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, Alien's multilib (multi), csb and Alien's restricted repository has no reference dependencie.
mles and Alien's restricted repository has no reference dependencies.
IMPORTANT: For Alien's (Eric Hameleers) repositories (alien, multi and ktown) should run IMPORTANT: For Alien's (Eric Hameleers) repositories (alien and multi) should run
'`slpkg upgrade`' instant '`slpkg update`', if you want to spend from -stable in -current or '`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. not, because there is no different file '`ChangeLog.txt`' for each version.

View file

@ -29,25 +29,17 @@
# repository. # repository.
# #
# Default repositories names: # Default repositories names:
# sbo, slack, rlw, alien, slacky, conrad, slonly, ktown, multi, slacke, salix, # sbo, slack, alien, conrad, slonly, multi, salix, msb, csb, connos
# slackl, rested, msb, csb, connos, mles
# NOTE: Slackware repository (slack) served from file slackware-mirros # NOTE: Slackware repository (slack) served from file slackware-mirros
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# #
# NAME URL # NAME URL
sbo http://slackbuilds.org/slackbuilds/ sbo https://slackbuilds.org/slackbuilds/
rlw http://slackware.uk/people/rlworkman/ alien https://bear.alienbase.nl/mirrors/people/alien/sbrepos/
alien http://bear.alienbase.nl/mirrors/people/alien/sbrepos/ conrad https://slack.conraid.net/repository/slackware64-current/
slacky http://repository.slacky.eu/ slonly httpss://slackonly.com/pub/packages/
conrad http://slack.conraid.net/repository/slackware64-current/ multi https://bear.alienbase.nl/mirrors/people/alien/multilib/
slonly https://slackonly.com/pub/packages/ salix https://download.salixos.org/
ktown http://alien.slackbook.org/ktown/ msb https://slackware.uk/msb/
multi http://bear.alienbase.nl/mirrors/people/alien/multilib/ csb https://slackware.uk/csb/
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/
connos https://connochaetos.org/slack-n-free/ 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. # conrad (Conraid's) repository must used from Slackware64 current.
# ktown (Alien"s ktown: 4.14.3 and latest) repository. Default ktown{latest}. # msb (Mate: 1,26, latest) repository. Default msb{1.26}
# 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}
# #
# Slackware ARM users will must use only two repositories at the moment slack and sbo. # Slackware ARM users will must use only two repositories at the moment slack and sbo.
# #
@ -43,17 +40,10 @@
slack slack
sbo sbo
# alien # alien
# rlw
# slacky
# conrad # conrad
# slonly # slonly
# ktown{latest}
# multi # multi
# slacke{18}
# salix # salix
# slackl # msb{1.26}
# rested
# msb{1.18}
# csb # csb
# connos # connos
# mles{desktop}

View file

@ -4,7 +4,7 @@ _slpkg()
cur=${COMP_WORDS[COMP_CWORD]} cur=${COMP_WORDS[COMP_CWORD]}
if [[ "$cur" == -* ]]; then 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 else
_filedir _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 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 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 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 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.' 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 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 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 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 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 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.' 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 .PP
\fB--download-only\fP : Download packages without install. \fB--download-only\fP : Download packages without install.
.PP .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. \fB--case-ins\fP : Search package name in repository with case insensitive.
.PP .PP
\fB--patches\fP : Switch to patches\ directory, only for slack repository. \fB--patches\fP : Switch to patches\ directory, only for slack repository.
@ -259,19 +257,6 @@ Additional options:
.PP .PP
\fB--third-party\fP : View all the third-party packages. \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 .SS -i, --installpkg, install Slackware binary packages
\fBslpkg\fP \fB-i\fP \fB[--warn, --md5sum, --root /otherroot, --infobox, --menu, --terse, \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> --ask, --priority ADD|REC|OPT|SKP, --tagfile /somedir/tagfile]\fP <\fIpackages.t?z\fP>
@ -324,20 +309,13 @@ For example:
slackware.com = "slack" slackware.com = "slack"
SlackBuilds.org = "sbo" SlackBuilds.org = "sbo"
Alien's = "alien" Alien's = "alien"
slacky.eu = "slacky"
rworkman's = "rlw"
Conraid's = "conrad" Conraid's = "conrad"
slackonly.com = "slonly" slackonly.com = "slonly"
Alien's ktown = "ktown{latest}"
Alien's multilib = "multi" Alien's multilib = "multi"
Slacke E17 and E18 = "slacke{18}"
SalixOS = "salix" SalixOS = "salix"
Slackel.gr = "slackel"
Alien's restricted = "rested"
MATE Desktop Environment = "msb{1.18}" MATE Desktop Environment = "msb{1.18}"
Cinnamon Desktop Environment = "csb" Cinnamon Desktop Environment = "csb"
Connochaetos slack-n-free = "connos" Connochaetos slack-n-free = "connos"
Microlinux mles = "mles"
Default enable repository is "slack" and "sbo". Default enable repository is "slack" and "sbo".
Add or remove default repository in configuration file "/etc/slpkg/repositories.conf". 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> : 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> <p style="margin-left:11%; margin-top: 1em"><b>--case-ins</b>
: Search package name in repository with case : Search package name in repository with case
insensitive.</p> insensitive.</p>
@ -474,29 +470,6 @@ options:</p>
<p style="margin-left:11%; margin-top: 1em"><b>--third-party</b> <p style="margin-left:11%; margin-top: 1em"><b>--third-party</b>
: View all the third-party packages.</p> : 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, <p style="margin-left:11%; margin-top: 1em"><b>-i,
--installpkg, install Slackware binary packages <br> --installpkg, install Slackware binary packages <br>
@ -592,20 +565,13 @@ slpkg &minus;&minus;help</b> - display help for slpkg</p>
&quot;slack&quot; <br> &quot;slack&quot; <br>
SlackBuilds.org = &quot;sbo&quot; <br> SlackBuilds.org = &quot;sbo&quot; <br>
Alien&rsquo;s = &quot;alien&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> Conraid&rsquo;s = &quot;conrad&quot; <br>
slackonly.com = &quot;slonly&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> Alien&rsquo;s multilib = &quot;multi&quot; <br>
Slacke E17 and E18 = &quot;slacke{18}&quot; <br>
SalixOS = &quot;salix&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> MATE Desktop Environment = &quot;msb{1.18}&quot; <br>
Cinnamon Desktop Environment = &quot;csb&quot; <br> Cinnamon Desktop Environment = &quot;csb&quot; <br>
Connochaetos slack-n-free = &quot;connos&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 <p style="margin-left:11%; margin-top: 1em">Default enable
repository is &quot;slack&quot; and &quot;sbo&quot;. <br> repository is &quot;slack&quot; and &quot;sbo&quot;. <br>

View file

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

View file

@ -85,12 +85,6 @@ Optional arguments:
-v | --version Print program version and exit. -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. -b | --blacklist, [package...] --add, Manage packages in the blacklist.
--remove, list Add or remove packages and print --remove, list Add or remove packages and print
the list. Each package is added the list. Each package is added
@ -119,7 +113,6 @@ Optional arguments:
-s | --sync, [repository] [package...], Sync packages. Install packages -s | --sync, [repository] [package...], Sync packages. Install packages
--rebuild, --reinstall, directly from remote repositories --rebuild, --reinstall, directly from remote repositories
--resolve-off, --download-only, with all dependencies. --resolve-off, --download-only, with all dependencies.
--directory-prefix=[dir],
--case-ins, --patches --case-ins, --patches
-t | --tracking, [repository] [package], Tracking package dependencies and -t | --tracking, [repository] [package], Tracking package dependencies and
@ -133,11 +126,6 @@ Optional arguments:
--color=[] directly from the repository and --color=[] directly from the repository and
change color text. 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 -F | --FIND, [package...], --case-ins Find packages from each enabled
repository and view results. repository and view results.
@ -190,7 +178,6 @@ def usage(repo, stderr):
Optional arguments: Optional arguments:
[-h] [-v] [-h] [-v]
[-a [script] [sources...]]
[-b [package...] --add, --remove, [-b [package...] --add, --remove,
[list]] [list]]
[-q [package...] --add, --remove, [-q [package...] --add, --remove,
@ -201,12 +188,10 @@ def usage(repo, stderr):
--resolve-off, --checklist] --resolve-off, --checklist]
[-s [repository] [package...], --rebuild, --reinstall, [-s [repository] [package...], --rebuild, --reinstall,
--resolve-off, --download-only, --resolve-off, --download-only,
--directory-prefix=[dir],
--case-ins, --patches] --case-ins, --patches]
[-t [repository] [package], --check-deps, --graph=[type], [-t [repository] [package], --check-deps, --graph=[type],
--case-ins] --case-ins]
[-p [repository] [package], --color=[]] [-p [repository] [package], --color=[]]
[-n [SBo package], --checklist, --case-ins]
[-F [package...], --case-ins] [-F [package...], --case-ins]
[-f [package...], --case-ins, --third-party] [-f [package...], --case-ins, --third-party]
[-i [options] [package...]] [-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.pkg.find import find_package
from slpkg.binary.greps import repo_data from slpkg.binaries.queries import repo_data
from slpkg.binary.repo_init import RepoInit from slpkg.binaries.repo_init import RepoInit
def pkg_upgrade(repo, skip, flag): def pkg_upgrade(repo, skip, flag):

View file

@ -26,23 +26,23 @@ import sys
from functools import lru_cache from functools import lru_cache
from slpkg.__metadata__ import MetaData as _meta_ from slpkg.__metadata__ import MetaData as _meta_
from slpkg.blacklist import BlackList
from slpkg.binary.greps import Requires from slpkg.binaries.queries import Requires
class Dependencies: class Dependencies:
"""Resolving binary dependencies """Resolving binary dependencies
""" """
def __init__(self, repo, black): def __init__(self, repo):
self.repo = repo self.repo = repo
self.black = black self.black = BlackList().get()
self.dep_results = [] self.dep_results = []
self.meta = _meta_ self.meta = _meta_
def binary(self, name, flag): def binary(self, name):
"""Builds all dependencies of a package """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) sys.setrecursionlimit(10000)
dependencies = [] dependencies = []
requires = Requires(name, self.repo).get_deps() requires = Requires(name, self.repo).get_deps()
@ -54,7 +54,7 @@ class Dependencies:
if req and req not in self.black: if req and req not in self.black:
dependencies.append(req) dependencies.append(req)
self.deep_check(tuple(dependencies), tuple(flag)) self.deep_check(tuple(dependencies))
return self.dep_results return self.dep_results
@ -62,9 +62,9 @@ class Dependencies:
return [] return []
@lru_cache @lru_cache
def deep_check(self, dependencies, flag): def deep_check(self, dependencies):
"""Checking if dependencies are finnished """Checking if dependencies are finnished
""" """
if dependencies: if dependencies:
self.dep_results.append(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.manager import PackageManager
from slpkg.pkg.installed import GetFromInstalled from slpkg.pkg.installed import GetFromInstalled
from slpkg.binary.greps import repo_data from slpkg.binaries.queries import repo_data
from slpkg.binary.repo_init import RepoInit from slpkg.binaries.repo_init import RepoInit
from slpkg.binary.dependency import Dependencies from slpkg.binaries.dependency import Dependencies
class BinaryInstall(BlackList, Utils): class BinaryInstall(Utils):
"""Installs binaries packages with all dependencies from """Installs binaries packages with all dependencies from
repository repository
""" """
@ -67,7 +67,6 @@ class BinaryInstall(BlackList, Utils):
self.msg = Msg() self.msg = Msg()
self.version = self.meta.slack_rel self.version = self.meta.slack_rel
self.tmp_path = self.meta.slpkg_tmp_packages self.tmp_path = self.meta.slpkg_tmp_packages
self.init_flags()
self.dwn, self.dep_dwn = [], [] self.dwn, self.dep_dwn = [], []
self.install, self.dep_install = [], [] self.install, self.dep_install = [], []
self.comp_sum, self.dep_comp_sum = [], [] self.comp_sum, self.dep_comp_sum = [], []
@ -83,20 +82,9 @@ class BinaryInstall(BlackList, Utils):
for name in self.data[0]: for name in self.data[0]:
self.repo_pkg_names.append(split_package(name)[0]) self.repo_pkg_names.append(split_package(name)[0])
self.blacklist = list(self.get_black()) self.blacklist = BlackList().get()
self.matching = False 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): def start(self, is_upgrade):
"""Installs packages from official Slackware distribution """Installs packages from official Slackware distribution
""" """
@ -105,6 +93,7 @@ class BinaryInstall(BlackList, Utils):
self.is_upgrade = is_upgrade self.is_upgrade = is_upgrade
mas_sum = dep_sum = sums = 0, 0, 0, 0 mas_sum = dep_sum = sums = 0, 0, 0, 0
self.msg.done() self.msg.done()
self.dependencies = self.resolving_deps() self.dependencies = self.resolving_deps()
self.update_deps() self.update_deps()
@ -237,12 +226,11 @@ class BinaryInstall(BlackList, Utils):
self.packages[index] = value self.packages[index] = value
def update_deps(self): def update_deps(self):
"""Updates dependencies dictionary with all package """Updates dependencies dictionary with all packages
""" """
for dep in self.dependencies: for dep in self.dependencies:
deps = self.dimensional_list(Dependencies( deps = self.dimensional_list(Dependencies(
self.repo, self.blacklist).binary( self.repo).binary(dep))
dep, self.flag))
self.deps_dict[dep] = deps self.deps_dict[dep] = deps
@ -251,7 +239,7 @@ class BinaryInstall(BlackList, Utils):
or if added to install two or more times or if added to install two or more times
""" """
packages = [] packages = []
for mas in self.remove_dbs(self.packages): for mas in self.packages:
if mas not in self.dependencies: if mas not in self.dependencies:
packages.append(mas) packages.append(mas)
@ -310,18 +298,24 @@ class BinaryInstall(BlackList, Utils):
""" """
requires = [] requires = []
if (self.meta.rsl_deps in ["on", "ON"] and if (self.meta.rsl_deps in ["off", "OFF"] and
self.flag != "--resolve-off"): "--resolve-off" not in self.flag):
self.msg.resolving() return requires
self.msg.resolving()
for dep in self.packages: 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): def _fix_deps_repos(self, dependencies):
"""Fixes store deps include in the repository """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): def _init_slack(self):
self.mirror = mirrors(name="", location="") self.mirror = mirrors(name="", location="")
def _init_rlw(self):
self.mirror = f"{self.def_repo_dict}{slack_ver()}/"
def _init_alien(self): def _init_alien(self):
ver = slack_ver() ver = slack_ver()
arch = "x86" arch = "x86"
@ -71,13 +68,6 @@ class RepoInit(Utils):
self.mirror = f"{self.def_repo_dict['alien']}{ver}/{arch}/" 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): def _init_conrad(self):
self.mirror = self.def_repo_dict["conrad"] self.mirror = self.def_repo_dict["conrad"]
@ -97,9 +87,6 @@ class RepoInit(Utils):
self.mirror = f"{self.def_repo_dict['slonly']}{arch}/" self.mirror = f"{self.def_repo_dict['slonly']}{arch}/"
def _init_ktown(self):
self.mirror = self.def_repo_dict["ktown"]
def _init_multi(self): def _init_multi(self):
ver = slack_ver() ver = slack_ver()
if self.meta.slack_rel == "current": if self.meta.slack_rel == "current":
@ -107,15 +94,6 @@ class RepoInit(Utils):
self.mirror = self.def_repo_dict["multi"] + ver + "/" 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): def _init_salix(self):
arch = "i486" arch = "i486"
if self.meta.arch == "x86_64": if self.meta.arch == "x86_64":
@ -123,16 +101,6 @@ class RepoInit(Utils):
self.mirror = f"{self.def_repo_dict['salix']}{arch}/{slack_ver()}/" 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): def _init_msb(self):
arch = "x86" arch = "x86"
if self.meta.arch == "x86_64": if self.meta.arch == "x86_64":
@ -153,11 +121,3 @@ class RepoInit(Utils):
arch = "64" arch = "64"
self.mirror = (f"{self.def_repo_dict['connos']}slack-n-free" self.mirror = (f"{self.def_repo_dict['connos']}slack-n-free"
f"{arch}-{slack_ver()}/") 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") text = utils.read_file(_meta_.lib_path + f"{repo}_repo/PACKAGES.TXT")
PACKAGES_TXT = list(utils.package_name(text)) 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: if name in PACKAGES_TXT and name not in blacklist:
return name 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): if os.path.isfile(self.blackfile):
self.black_conf = self.read_file(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 """Return blacklist packages from /etc/slpkg/blacklist
configuration file.""" configuration file."""
blacklist = list(self.black_filter()) blacklist = list(self.black_filter())

View file

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

View file

@ -26,7 +26,7 @@ from slpkg.utils import Utils
from slpkg.messages import Msg from slpkg.messages import Msg
from slpkg.__metadata__ import MetaData as _meta_ from slpkg.__metadata__ import MetaData as _meta_
from slpkg.sbo.greps import SBoGrep from slpkg.sbo.queries import SboQuery
class PkgDesc(Utils): class PkgDesc(Utils):
@ -57,7 +57,7 @@ class PkgDesc(Utils):
description, count = "", 0 description, count = "", 0
if self.repo == "sbo": if self.repo == "sbo":
description = SBoGrep(self.name).description() description = SboQuery(self.name).description()
else: else:
PACKAGES_TXT = self.read_file(self.lib) 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.mirrors import mirrors
from slpkg.slack.slack_version import slack_ver 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): class Init(Utils):
@ -195,36 +195,6 @@ class Init(Utils):
self.remote(log, ChangeLog_txt, lib, SLACKBUILDS_TXT, CHECKSUMS_MD5, self.remote(log, ChangeLog_txt, lib, SLACKBUILDS_TXT, CHECKSUMS_MD5,
FILELIST_TXT, repo_name) 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): def alien(self):
"""Creating alien local library """Creating alien local library
""" """
@ -263,43 +233,8 @@ class Init(Utils):
self.remote(log, ChangeLog_txt, lib, PACKAGES_TXT, CHECKSUMS_MD5, self.remote(log, ChangeLog_txt, lib, PACKAGES_TXT, CHECKSUMS_MD5,
FILELIST_TXT, repo_name) 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): def conrad(self):
"""Creating slackers local library """Creating conrad local library
""" """
repo = self.def_repos_dict["conrad"] repo = self.def_repos_dict["conrad"]
log = self.log_path + "conrad/" log = self.log_path + "conrad/"
@ -328,7 +263,7 @@ class Init(Utils):
FILELIST_TXT, repo_name) FILELIST_TXT, repo_name)
def slonly(self): def slonly(self):
"""Creating slackers local library """Creating slonly local library
""" """
ar = f"{self.slack_ver}-x86" ar = f"{self.slack_ver}-x86"
repo = self.def_repos_dict["slonly"] repo = self.def_repos_dict["slonly"]
@ -367,36 +302,6 @@ class Init(Utils):
self.remote(log, ChangeLog_txt, lib, PACKAGES_TXT, CHECKSUMS_MD5, self.remote(log, ChangeLog_txt, lib, PACKAGES_TXT, CHECKSUMS_MD5,
FILELIST_TXT, repo_name) 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): def multi(self):
"""Creating alien multilib local library """Creating alien multilib local library
""" """
@ -431,44 +336,6 @@ class Init(Utils):
self.remote(log, ChangeLog_txt, lib, PACKAGES_TXT, CHECKSUMS_MD5, self.remote(log, ChangeLog_txt, lib, PACKAGES_TXT, CHECKSUMS_MD5,
FILELIST_TXT, repo_name) 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): def salix(self):
"""Creating SalixOS local library """Creating SalixOS local library
""" """
@ -503,70 +370,6 @@ class Init(Utils):
self.remote(log, ChangeLog_txt, lib, PACKAGES_TXT, CHECKSUMS_MD5, self.remote(log, ChangeLog_txt, lib, PACKAGES_TXT, CHECKSUMS_MD5,
FILELIST_TXT, repo_name) 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): def msb(self):
"""Creating MATE local library """Creating MATE local library
""" """
@ -679,41 +482,6 @@ class Init(Utils):
self.remote(log, ChangeLog_txt, lib, PACKAGES_TXT, CHECKSUMS_MD5, self.remote(log, ChangeLog_txt, lib, PACKAGES_TXT, CHECKSUMS_MD5,
FILELIST_TXT, repo_name) 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): def down(self, path, link, repo):
"""Downloads files """Downloads files
""" """
@ -731,7 +499,6 @@ class Init(Utils):
CHECKSUMS_MD5 = args[4] CHECKSUMS_MD5 = args[4]
FILELIST_TXT = args[5] FILELIST_TXT = args[5]
repo = args[6] repo = args[6]
if self.checks_logs(log_path, ChangeLog_txt): if self.checks_logs(log_path, ChangeLog_txt):
# remove old files # remove old files
self.file_remove(log_path, ChangeLog_txt.split("/")[-1]) 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(lib_path, FILELIST_TXT, repo)
self.down(log_path, ChangeLog_txt, repo) self.down(log_path, ChangeLog_txt, repo)
if repo == 'sbo': delete_table_data(repo)
self.session.query(SBoTable).delete() # delete all data
self.session.commit()
def merge(self, path, outfile, infiles): def merge(self, path, outfile, infiles):
"""Merging files """Merging files
@ -798,7 +563,6 @@ class Init(Utils):
if os.path.isfile(log_path + filename): if os.path.isfile(log_path + filename):
local = FileSize(log_path + filename).local() local = FileSize(log_path + filename).local()
if server != local: if server != local:
return True return True
@ -846,10 +610,7 @@ class Upgrade:
update = Update() update = Update()
update.run(repos) update.run(repos)
def del_tables(self, repo): delete_table_data(repo)
if repo == 'sbo':
self.session.query(SBoTable).delete() # delete all data
self.session.commit()
class Update: class Update:
@ -909,12 +670,25 @@ class Update:
if self.session.query(SBoTable).first() is None: if self.session.query(SBoTable).first() is None:
db.insert_sbo_table() db.insert_sbo_table()
if self.session.query(AlienTable).first() is None:
db.insert_alien_table()
def done_msg(self, repo): def done_msg(self, repo):
print(f"{self.grey}Checking repository " print(f"{self.grey}Checking repository "
f"[{self.cyan}{repo}{self.grey}] ... " f"[{self.cyan}{repo}{self.grey}] ... "
f"{self.endc}", end="", flush=True) 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): def check_exists_repositories(repo):
"""Checking if repositories exists by PACKAGES.TXT file """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.queue import QueuePkgs
from slpkg.sbo.check import sbo_upgrade 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.sbo.slackbuild import SBoInstall
from slpkg.slack.patches import Patches from slpkg.slack.patches import Patches
from slpkg.binary.check import pkg_upgrade from slpkg.binaries.check import pkg_upgrade
from slpkg.binary.install import BinaryInstall from slpkg.binaries.install import BinaryInstall
class ArgParse(BlackList): class ArgParse:
def __init__(self, args): def __init__(self, args):
super().__init__() super().__init__()
self.args = args self.args = args
self.meta = _meta_ self.meta = _meta_
self.msg = Msg() self.msg = Msg()
self.blacklist = BlackList().get()
self.commands = [ self.commands = [
"update", "update",
"upgrade", "upgrade",
@ -292,20 +291,6 @@ class ArgParse(BlackList):
else: else:
usage("", 1) 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): def pkg_list(self):
"""List of packages by repository """List of packages by repository
""" """
@ -437,7 +422,6 @@ class ArgParse(BlackList):
additional_options = [ additional_options = [
"--resolve-off", "--resolve-off",
"--download-only", "--download-only",
"--directory-prefix=",
"--case-ins", "--case-ins",
"--rebuild", "--rebuild",
"--reinstall", "--reinstall",
@ -524,40 +508,6 @@ class ArgParse(BlackList):
else: else:
usage("", 1) 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): def pkg_blacklist(self):
"""Manages blacklist packages """Manages blacklist packages
""" """
@ -584,7 +534,7 @@ class ArgParse(BlackList):
elif (len(self.args) == 2 and self.args[0] in options and elif (len(self.args) == 2 and self.args[0] in options and
flag[1] in self.args): flag[1] in self.args):
self.args.remove(flag[1]) 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 elif (len(self.args) > 2 and self.args[0] in options and
flag[1] in self.args): flag[1] in self.args):
@ -998,8 +948,6 @@ def main():
"deps-status": argparse.command_deps_status, "deps-status": argparse.command_deps_status,
"new-config": argparse.command_new_config, "new-config": argparse.command_new_config,
"clean-tmp": argparse.command_clean_tmp, "clean-tmp": argparse.command_clean_tmp,
"-a": argparse.auto_build,
"--autobuild": argparse.auto_build,
"-l": argparse.pkg_list, "-l": argparse.pkg_list,
"--list": argparse.pkg_list, "--list": argparse.pkg_list,
"-c": argparse.pkg_upgrade, "-c": argparse.pkg_upgrade,
@ -1008,8 +956,6 @@ def main():
"--sync": argparse.pkg_install, "--sync": argparse.pkg_install,
"-t": argparse.pkg_tracking, "-t": argparse.pkg_tracking,
"--tracking": argparse.pkg_tracking, "--tracking": argparse.pkg_tracking,
"-n": argparse.sbo_network,
"--netwotk": argparse.sbo_network,
"-b": argparse.pkg_blacklist, "-b": argparse.pkg_blacklist,
"--blacklist": argparse.pkg_blacklist, "--blacklist": argparse.pkg_blacklist,
"-q": argparse.pkg_queue, "-q": argparse.pkg_queue,

View file

@ -24,7 +24,7 @@
from progress.bar import Bar from progress.bar import Bar
from slpkg.__metadata__ import MetaData as _meta_ from slpkg.__metadata__ import MetaData as _meta_
from slpkg.models.models import SBoTable, session from slpkg.models.models import SBoTable, AlienTable, session
class Database: class Database:
@ -33,6 +33,21 @@ class Database:
self.lib_path = _meta_.lib_path self.lib_path = _meta_.lib_path
self.session = session 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): def insert_sbo_table(self):
"""Grabbing data line by line and inserting them into the database """Grabbing data line by line and inserting them into the database
""" """
@ -65,7 +80,8 @@ class Database:
cache.append(line) cache.append(line)
if (i % 11) == 0: 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], files=cache[2], version=cache[3],
download=cache[4], download64=cache[5], download=cache[4], download64=cache[5],
md5sum=cache[6], md5sum64=cache[7], md5sum=cache[6], md5sum64=cache[7],
@ -79,6 +95,33 @@ class Database:
self.session.commit() self.session.commit()
def open_file(self, file): def insert_alien_table(self):
with open(file, "r", encoding="utf-8") as f: pkg_file = self.open_file(f"{self.lib_path}alien_repo/PACKAGES.TXT")
return f.readlines()
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) 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) Base.metadata.create_all(engine)

View file

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

View file

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

View file

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

View file

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

View file

@ -132,7 +132,7 @@ class RepoInfo(Utils):
if line.startswith("PACKAGE SIZE (uncompressed): "): if line.startswith("PACKAGE SIZE (uncompressed): "):
unsize.append(line[30:-2].strip()) unsize.append(line[30:-2].strip())
if repo in ["salix", "slackl"]: if repo == "salix":
log = self.read_file( log = self.read_file(
f"{self.meta.log_path}{repo}/ChangeLog.txt") 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.upgrade_checklist import choose_upg
from slpkg.__metadata__ import MetaData as _meta_ from slpkg.__metadata__ import MetaData as _meta_
from slpkg.sbo.greps import SBoGrep from slpkg.sbo.queries import SboQuery
def sbo_upgrade(skip, flag): def sbo_upgrade(skip, flag):
@ -41,15 +41,15 @@ def sbo_upgrade(skip, flag):
black = BlackList() black = BlackList()
msg.checking() msg.checking()
upgrade_names = [] upgrade_names = []
data = SBoGrep(name="").names() data = SboQuery(name="").names()
blacklist = list(black.get_black()) blacklist = black.get()
for pkg in sbo_list(): for pkg in sbo_list():
name = split_package(pkg)[0] name = split_package(pkg)[0]
ver = split_package(pkg)[1] ver = split_package(pkg)[1]
if (name in data and name not in skip and name not in blacklist): 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}" package = f"{name}-{ver}"
if parse_version(sbo_package) > parse_version(package): if parse_version(sbo_package) > parse_version(package):

View file

@ -1,14 +1,15 @@
# Rworkman's dependencies: #!/usr/bin/python3
# # -*- coding: utf-8 -*-
# rlworkman.deps file is part of slpkg.
# # dependencies.py file is part of slpkg.
# Copyright 2014-2022 Dimitris Zlatanidis <d.zlatanidis@gmail.com> # Copyright 2014-2022 Dimitris Zlatanidis <d.zlatanidis@gmail.com>
# All rights reserved. # 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 # https://gitlab.com/dslackw/slpkg
#
# Slpkg is free software: you can redistribute it and/or modify # Slpkg is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or # the Free Software Foundation, either version 3 of the License, or
@ -19,17 +20,29 @@
# GNU General Public License for more details. # GNU General Public License for more details.
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# END OF LEGAL NOTICE
# from slpkg.sbo.queries import SboQuery
# ---------------------------------------------------------------------------- from slpkg.blacklist import BlackList
# 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/ class Requires:
# ---------------------------------------------------------------------------- """Creates a list of dependencies with
# the right order to install"""
# PACKAGE: DEPENDENCIES
abiword: wv def __init__(self, name):
claws-mail: libetpan self.name = name
inkscape: lxml numpy BeautifulSoup self.black = BlackList().get()
xfburn: libburn libisofs
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/>. # 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.__metadata__ import MetaData as _meta_
from slpkg.models.models import SBoTable, session from slpkg.models.models import SBoTable, session
class SBoGrep(Utils): class SboQuery:
"""Grabs data from sbo database """Grabs data from sbo database
""" """
def __init__(self, name): def __init__(self, name):
self.name = name self.name = name
self.meta = _meta_ self.meta = _meta_
self.db = self.meta.db
self.arch64 = "x86_64" self.arch64 = "x86_64"
self.session = session 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.build import BuildPackage
from slpkg.pkg.manager import PackageManager 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.compressed import SBoLink
from slpkg.sbo.search import sbo_search_pkg from slpkg.sbo.search import sbo_search_pkg
from slpkg.sbo.slack_find import slack_package from slpkg.sbo.slack_find import slack_package
@ -145,7 +145,7 @@ class QueuePkgs(Utils):
for pkg in packages: 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 " raise SystemExit(f"\nPackage '{pkg}' was not found in "
f"the SBo repository\n") f"the SBo repository\n")
@ -157,7 +157,7 @@ class QueuePkgs(Utils):
sbo_url = sbo_search_pkg(pkg) sbo_url = sbo_search_pkg(pkg)
sbo_dwn = SBoLink(sbo_url).tar_gz() 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) os.chdir(self.meta.build_path)
script = sbo_dwn.split("/")[-1] script = sbo_dwn.split("/")[-1]
@ -186,7 +186,7 @@ class QueuePkgs(Utils):
for pkg in packages: for pkg in packages:
ver = SBoGrep(pkg).version() ver = SboQuery(pkg).version()
prgnam = f"{pkg}-{ver}" prgnam = f"{pkg}-{ver}"
if find_package(prgnam, self.meta.output): if find_package(prgnam, self.meta.output):

View file

@ -38,4 +38,4 @@ def sbo_search_pkg(name):
sbo = repo.default_repository()["sbo"] sbo = repo.default_repository()["sbo"]
sbo_url = f"{sbo}{slack_ver()}/" 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.manager import PackageManager
from slpkg.pkg.installed import GetFromInstalled 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.sbo_arch import SBoArch
from slpkg.sbo.compressed import SBoLink from slpkg.sbo.compressed import SBoLink
from slpkg.sbo.dependency import Requires
from slpkg.sbo.search import sbo_search_pkg from slpkg.sbo.search import sbo_search_pkg
from slpkg.sbo.dependencies import Requires
from slpkg.sbo.slack_find import slack_package from slpkg.sbo.slack_find import slack_package
class SBoInstall(BlackList, Utils): class SBoInstall(Utils):
"""Build and install SBo packages with all dependencies """Build and install SBo packages with all dependencies
""" """
def __init__(self, slackbuilds, flag): def __init__(self, slackbuilds, flag):
@ -65,7 +65,6 @@ class SBoInstall(BlackList, Utils):
self.arch = SBoArch().get() self.arch = SBoArch().get()
self.build_folder = self.meta.build_path self.build_folder = self.meta.build_path
self._SOURCES = self.meta.SBo_SOURCES self._SOURCES = self.meta.SBo_SOURCES
self.init_flags()
self.unst = ["UNSUPPORTED", "UNTESTED"] self.unst = ["UNSUPPORTED", "UNTESTED"]
self.master_packages = [] self.master_packages = []
self.deps = [] self.deps = []
@ -79,19 +78,8 @@ class SBoInstall(BlackList, Utils):
self.count_upg = 0 self.count_upg = 0
self.count_uni = 0 self.count_uni = 0
self.msg.reading() self.msg.reading()
self.data = SBoGrep(name="").names() self.data = SboQuery(name="").names()
self.blacklist = list(self.get_black()) self.blacklist = BlackList().get()
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 += "/"
def start(self, is_upgrade): def start(self, is_upgrade):
"""Start view, build and install SBo packages """Start view, build and install SBo packages
@ -103,33 +91,35 @@ class SBoInstall(BlackList, Utils):
for _sbo in self.slackbuilds: for _sbo in self.slackbuilds:
if _sbo in self.data and _sbo not in self.blacklist: 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 += sbo_deps
self.deps_dict[_sbo] = self.one_for_all(sbo_deps)
self.deps_dict[_sbo] = sbo_deps
self.package_found.append(_sbo) self.package_found.append(_sbo)
else: else:
self.package_not_found.append(_sbo) self.package_not_found.append(_sbo)
self.update_deps()
if not self.package_found: if not self.package_found:
self.match = True self.match = True
self.matching() self.matching()
self.master_packages, mas_src = self.sbo_version_source( self.master_packages, mas_src = self.sbo_version_source(
self.package_found) self.package_found)
self.msg.done() self.msg.done()
if (self.meta.rsl_deps in ["on", "ON"] and if (self.meta.rsl_deps in ["on", "ON"] and
self.flag != "--resolve-off" and not self.match): self.flag != "--resolve-off" and not self.match):
self.msg.resolving() 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 if (self.meta.rsl_deps in ["on", "ON"] and
self.flag != "--resolve-off" and not self.match): self.flag != "--resolve-off" and not self.match):
self.msg.done() self.msg.done()
self.clear_masters() self.clear_masters()
if self.package_found: if self.package_found:
@ -198,17 +188,6 @@ class SBoInstall(BlackList, Utils):
if key == name.lower(): if key == name.lower():
self.slackbuilds[index] = value 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): def continue_to_install(self):
"""Continue to install ? """Continue to install ?
""" """
@ -235,7 +214,6 @@ class SBoInstall(BlackList, Utils):
"""Clear master slackbuilds if already exist in dependencies """Clear master slackbuilds if already exist in dependencies
or if added to install two or more times or if added to install two or more times
""" """
self.master_packages = self.remove_dbs(self.master_packages)
for mas in self.master_packages: for mas in self.master_packages:
if mas in self.dependencies: if mas in self.dependencies:
@ -257,9 +235,9 @@ class SBoInstall(BlackList, Utils):
sbo_versions, sources = [], [] sbo_versions, sources = [], []
for sbo in slackbuilds: for sbo in slackbuilds:
sbo_ver = f"{sbo}-{SBoGrep(sbo).version()}" sbo_ver = f"{sbo}-{SboQuery(sbo).version()}"
sbo_versions.append(sbo_ver) sbo_versions.append(sbo_ver)
sources.append(SBoGrep(sbo).source()) sources.append(SboQuery(sbo).source())
return [sbo_versions, sources] return [sbo_versions, sources]
@ -376,7 +354,7 @@ class SBoInstall(BlackList, Utils):
pkg = "-".join(prgnam.split("-")[:-1]) pkg = "-".join(prgnam.split("-")[:-1])
installed = "".join(find_package(prgnam, self.meta.pkg_path)) 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 if (installed and "--download-only" not in self.flag and
"--rebuild" not in self.flag): "--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.manager import PackageManager
from slpkg.pkg.installed import GetFromInstalled 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.mirrors import mirrors
from slpkg.slack.slack_version import slack_ver from slpkg.slack.slack_version import slack_ver
class Patches(BlackList, Utils): class Patches(Utils):
"""Upgrades distribution from the official Slackware mirrors """Upgrades distribution from the official Slackware mirrors
""" """
def __init__(self, skip, flag): def __init__(self, skip, flag):
@ -78,6 +78,7 @@ class Patches(BlackList, Utils):
self.comp_sum = [] self.comp_sum = []
self.uncomp_sum = [] self.uncomp_sum = []
self.msg.checking() self.msg.checking()
self.blacklist = BlackList().get()
if self.version == "stable": if self.version == "stable":
self.PACKAGES_TXT = URL(mirrors("PACKAGES.TXT", self.PACKAGES_TXT = URL(mirrors("PACKAGES.TXT",
@ -153,7 +154,7 @@ class Patches(BlackList, Utils):
"""Stores and returns packages for upgrading """Stores and returns packages for upgrading
""" """
data = repo_data(self.PACKAGES_TXT, "slack", self.flag) 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]): for name, loc, comp, uncomp in zip(data[0], data[1], data[2], data[3]):
repo_pkg_name = split_package(name)[0] repo_pkg_name = split_package(name)[0]
@ -162,7 +163,7 @@ class Patches(BlackList, Utils):
pkg_ver = split_package(name)[1] pkg_ver = split_package(name)[1]
if (GetFromInstalled(pkg_name).name() and 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 repo_pkg_name not in self.skip and
parse_version(pkg_ver) > parse_version( parse_version(pkg_ver) > parse_version(
GetFromInstalled(pkg_name).version())): GetFromInstalled(pkg_name).version())):
@ -178,7 +179,7 @@ class Patches(BlackList, Utils):
self.count_upg -= 1 self.count_upg -= 1
elif (not os.path.isfile(self.meta.pkg_path + name[:-4]) and 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): repo_pkg_name not in self.skip):
self.dwn_links.append(f"{mirrors('', '')}{loc}/{name}") self.dwn_links.append(f"{mirrors('', '')}{loc}/{name}")
self.comp_sum.append(comp) self.comp_sum.append(comp)

View file

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

View file

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