Bump to version 2.2.0

This commit is contained in:
Dimitris Zlatanidis 2015-01-08 09:26:58 +02:00
parent 11351c2d27
commit afc9ec0d7b
33 changed files with 641 additions and 253 deletions

View file

@ -1,3 +1,17 @@
Version 2.2.0
08-1-2015
[Updated] - Fix queue downloads.
- Update find argument.
- Rename commands repolist and repoinfo to repo-list, repo-info.
- Update installed package list.
[Feature] - Added custom binary repository.
- Added Slackware 'patches' repository in PACKAGES.txt file.
- Added Alien's restricted repository.
- Added wget option.
- Added view default repositories in repo-list.
Version 2.1.5
27-12-2014

13
CHECKSUMS.md5 Normal file
View file

@ -0,0 +1,13 @@
These are the MD5 message digests for the files in this directory.
If you want to test your files, use 'md5sum' and compare the values to
the ones listed here.
To test all these files, use this command:
tail +13 CHECKSUMS.md5 | md5sum -c --quiet - | less
'md5sum' can be found in the GNU coreutils package on ftp.gnu.org in
/pub/gnu, or at any GNU mirror site.
MD5 message digest Filename
74d79364aef2717c00eae3a37c0e7479 ./slpkg-2.1.5.tar.gz

View file

@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: slpkg
Version: 2.1.5
Version: 2.1.x-dev
Author: dslackw
Author-email: d zlatanidis at gmail com
Maintainer: dslackw

View file

@ -11,9 +11,9 @@
Latest Release:
- Version: 2.1.5
- Version: 2.1.dev
- `Package <https://sourceforge.net/projects/slpkg/files/slpkg/binary/>`_
- `Source <https://github.com/dslackw/slpkg/archive/v2.1.5.tar.gz>`_
- `Source <https://github.com/dslackw/slpkg/archive/v2.1.dev.tar.gz>`_
- `CHANGELOG <https://github.com/dslackw/slpkg/blob/master/CHANGELOG>`_
.. image:: https://raw.githubusercontent.com/dslackw/images/master/slpkg/logo.png
@ -29,11 +29,11 @@ packages.
Slpkg is `Open Source <http://en.wikipedia.org/wiki/Open_source>`_ software written in
Python language. It's use is for managing packages in Slackware linux distribution.
Supported Repositories:
Default available Repositories:
- SBo - `Reposiory <http://slackbuilds.org/>`_
Arch: {x86, x86_64}
Versions: {11.0, 12.0, 12.1, 12.2, 13.0, 13.1, 13.37, 14.0, 14.1}
Versions: {13.1, 13.37, 14.0, 14.1}
- Slack - `Repository <http://www.slackware.com/>`_
Arch: {x86, x86_64}
Versions: {3.3, 8.1, 9.0, 9.1, 10.0, 10.1, 10.2, 11.0, 12.0, 12.2, 13.0, 13.37, 14.0, 14.1, current}
@ -70,10 +70,15 @@ Supported Repositories:
- Slackel - `Repository <http://www.slackel.gr/repo/>`_
Arch: {x86, x86_64}
Versions: {current}
- Restricted - `Repository <http://taper.alienbase.nl/mirrors/people/alien/restricted_slackbuilds/>`_
Arch: {x86, x86_64}
Versions: {11.0, 12.0, 12.1, 12.2, 13.0, 13.1, 13.37, 14.0, 14,1, current}
* Choose repositories you need to work from file '/etc/slpkg/slpkg.conf' default is
* Choose default repositories you need to work from file '/etc/slpkg/slpkg.conf' default is
'slack' and 'sbo' repositories and read REPOSITORIES file for each of the particularities.
If a repository is not in the above list, manage custom repositories with commands 'repo-add'
and 'repo-remove'.
Slpkg works in accordance with the standards of the organization slackbuilds.org
to builds packages. Also uses the Slackware linux instructions for installation,
@ -135,8 +140,8 @@ Untar the archive and run install.sh script:
.. code-block:: bash
$ tar xvf slpkg-2.1.5.tar.gz
$ cd slpkg-2.1.5
$ tar xvf slpkg-2.1.dev.tar.gz
$ cd slpkg-2.1.dev
$ ./install.sh
From SourceForge:
@ -172,6 +177,8 @@ Configuration files
/etc/slpkg/slackware-mirrors
List of Slackware Mirrors
/etc/slpkg/custom-repositories
List of custom repositories
Slackware Current
-----------------
@ -214,7 +221,7 @@ before proceeding to any installation or upgrade a new package.
Issues
------
Please report any bugs in "https://github.com/dslackw/slpkg/issues"
Please report any bugs in `ISSUES <https://github.com/dslackw/slpkg/issues>`_
Command Line Tool Usage
@ -227,25 +234,27 @@ Command Line Tool Usage
Commands:
update update all package lists
re-create recreate package lists
repolist list all repositories
repoinfo [repository] repository information
repo-add [repository name] [URL] add custom repository
repo-remove [repository] remove custom repository
repo-list list all repositories
repo-info [repository] repository information
update slpkg check and update slpkg
Optional arguments:
-h, --help show this help message and exit
-v, --version print version and exit
-a, script.tar.gz [source...] auto build SBo packages
-a, [script.tar.gz] [source...] auto build SBo packages
-b, --list, [package...] --add, --remove add, remove packages in blacklist
-q, --list, [package...] --add, --remove add, remove SBo packages in queue
--build, --install, --build-install build, install packages from queue
-q, --build, --install, --build-install build, install packages from queue
-g, --config, --config=[editor] configuration file management
-l, [repository], all list of installed packages
-c, [repository] --upgrade check for updated packages
-s, [repository] [package] download, build & install
-t, [repository] [package] tracking dependencies
-p, [repository] [package], --color=[] print package description
-f, [package] find installed packages
-n, [package] view SBo packages through network
-f, [package...] find installed packages
-i, [package...] install binary packages
-u, [package...] upgrade binary packages
-o, [package...] reinstall binary packages
@ -277,33 +286,50 @@ and update the package lists:
Update repository multi ...Done
Take information repositories with commands:
Add and remove custom repositories:
.. code-block:: bash
$ slpkg repo-add ponce http://ponce.cc/slackware/slackware64-14.1/packages/
Repository 'ponce' successfully added
$ slpkg repo-remove ponce
Repository 'ponce' successfully removed
View information about the repositories:
.. code-block:: bash
$ slpkg repolist
$ slpkg repo-list
+==============================================================================
| Repo id Repo name Status
| Repo id Repo URL Default Status
+==============================================================================
alien http://www.slackware.com/~alien/slackbuilds/ enabled
ktown http://alien.slackbook.org/ktown/ enabled
multi http://www.slackware.com/~alien/multilib/ enabled
rlw http://rlworkman.net/pkgs/ enabled
salix http://download.salixos.org/ enabled
sbo http://slackbuilds.org/slackbuilds/ enabled
slack http://mirrors.slackware.com/slackware/ enabled
slacke http://ngc891.blogdns.net/pub/ enabled
slackl http://www.slackel.gr/repo/ enabled
slackr http://www.slackers.it/repository/ disabled
slacky http://repository.slacky.eu/ enabled
slonly https://slackonly.com/pub/packages/ enabled
studio http://studioware.org/files/packages/ enabled
alien http://www.slackware.com/~alien/slackbuilds/ yes disabled
ktown http://alien.slackbook.org/ktown/ yes disabled
multi http://www.slackware.com/~alien/multilib/ yes disabled
ponce http://ponce.cc/slackware/slackware64-14.1/packa~ no enabled
rested http://taper.alienbase.nl/mirrors/people/alien/r~ yes disabled
rlw http://rlworkman.net/pkgs/ yes disabled
salix http://download.salixos.org/ yes disabled
sbo http://slackbuilds.org/slackbuilds/ yes enabled
slack http://ftp.cc.uoc.gr/mirrors/linux/slackware/ yes enabled
slacke http://ngc891.blogdns.net/pub/ yes disabled
slackl http://www.slackel.gr/repo/ yes disabled
slackr http://www.slackers.it/repository/ yes disabled
slacky http://repository.slacky.eu/ yes disabled
slonly https://slackonly.com/pub/packages/ yes disabled
studio http://studioware.org/files/packages/ yes disabled
For enable or disable repositories edit '/etc/slpkg/slpkg.conf' file
For enable or disable default repositories edit '/etc/slpkg/slpkg.conf' file
$ slpkg repoinfo alien
$ slpkg repo-info alien
Default: yes
Last updated: Tue Dec 23 11:48:31 UTC 2014
Number of packages: 3149
Repo id: alien

View file

@ -2,6 +2,9 @@
This file was created to explain some peculiarities of repositories used by the slpkg.
--------------------------------------------------------------------------------------
Default repositories:
---------------------
SlackBuilds.org (sbo) FAQ(15):
Slackware current is not supported, but as a general rule, the scripts
should work on it as well.
@ -21,12 +24,22 @@ dependence 'ffmpeg' but that is not available from the repository itself).
Slackonly (slonly) repository contains no dependencies on file PACKAGES.TXT and this makes
it difficult to automatically resolve dependencies and in the file PACKAGES.TXT and some
lines with 'PACKAGE NAME:' there is no package so 'slpkg' can not find package.
Users with Slackware x86_64 will use this repository should establish from the beginning
the list of packages with the command 'slpkg re-create' to be updated with new packages
and it's because the repository has not 'ChangeLog.txt' file.
Studioware (studio), Alien's ktown (ktown), Alien's multilib (multi), Slacke E17 and E18
repository has no reference dependencies.
and Alien's restricted repository has no reference dependencies.
Slackel.gr (slackl) repository must be used only from Slackware current users and has the
same peculiarities in the repository 'slackr'.
Custom repositories:
--------------------
There is the possibility of adding the repository directly from the user enough to address
up to be the 'PACKAGES.TXT' files and 'CHECKSUMS.md5' least. If not is there for file
'ChangeLog.txt' will get warning messages that the 'ChangeLog.txt' file can not be read but do
not worry, the process is completed normally have each time you run the command 'slpkg update'
the package lists for such a repository will be recreated from start automatically.
Sometimes you may experience some problems with these repositories such as the not correctly
resolve dependencies, and this may happen some specificities separate list which unfortunately
can not be calculated, good is the purpose of mentioning these problems.

31
conf/custom-repositories Normal file
View file

@ -0,0 +1,31 @@
# List File Repositories:
#
# custom-repositories file is part of slpkg.
#
# Copyright 2014 Dimitris Zlatanidis <d.zlatanidis@gmail.com>
# All rights reserved.
#
# Slpkg is a user-friendly package manager for Slackware installations.
#
# https://github.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/>.
#
# END OF LEGAL NOTICE
#
# This file is used to read, write and remove custom repositories by
# the user. The repositories will be added here should have a different
# name from existing repositories and the default. Also, the link must
# contain the PACKAGES.TXT files, CHECKSUMS.md5 and optional ChangeLog.txt.
# -------------------------------------------------------------------------
#
# NAME URL

View file

@ -25,7 +25,7 @@ VERSION=stable
# Choose repositories want to work. Read first REPOSITORIES file.
# Available repositories : slack,sbo,alien,rlw,slacky,studio,slackr,slonly,
# ktown{latest},multi,slacke{18},salix,slackl
# ktown{latest},multi,slacke{18},salix,slackl,rested
# slackr (slackers.it) repository must used from Slackware64 current.
# Ktown (Alien's ktown) repository. Default ktown{latest}.
# Slacke (Enlightenment E17 and E18) repository. Default slacke{18}.
@ -36,7 +36,7 @@ REPOSITORIES=slack,sbo
BUILD=/tmp/slpkg/build/
# If SBO_CHECK_MD5 is 'on' the system will check all downloaded
# sources from SBo repository.
# sources.
SBO_CHECK_MD5=on
# Download directory for others repositories that use binaries files
@ -73,3 +73,6 @@ DEL_DEPS=off
# Use colors for highlighting. Choose 'on' or 'off'.
USE_COLORS=on
# Wget [OPTION]. Pass wget options. Default is '-c -N'.
WGET_OPTION=-c -N

View file

@ -21,7 +21,7 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PRGNAM=slpkg
VERSION=${VERSION:-2.1.5}
VERSION=${VERSION:-2.1.x-dev}
TAG=${TAG:-_dsw}
# Installation script.

View file

@ -15,18 +15,24 @@
.SH NAME
Slpkg is a user-friendly package manager for Slackware installations
.SH SYNOPSIS
Usage: slpkg [-h] [-v] [-a script.tar.gz [sources...]]
[-b --list, --add, --remove [...]]
[-q --list, [...] --add, --remove]
[ --build, --install, --build-install]
[-g --config, --config=[editor]]
[-l [repository], all]
[-c [repository] --upgrade]
[-s [repository] [package][
[-t [repository] [package]]
[-p [repository] [package], --color=[]]
[-f] [-n] [-i [...]] [-u [...]]
[-o [...]] [-r [...]] [-d [...]]
Usage: slpkg Commands:
[update] [re-create] [repo-add [repository name] [URL]]
[repo-remove [repository]] [repo-list]
[repo-info [repository]] [update [slpkg]]
Optional arguments:
[-h] [-v] [-a [script.tar.gz] [sources...]]
[-b --list, [...] --add, --remove]
[-q --list, [...] --add, --remove]
[-q --build, --install, --build-install]
[-g --config, --config=[editor]]
[-l all, official, non-official, --index]
[-c [repository] --upgrade]
[-s [repository] [package]
[-t [repository] [package]
[-p [repository] [package], --color=[]]
[-n] [-f [...]] [-i [...]] [-u [...]]
[-o [...]] [-r [...]] [-d [...]]
.SH DESCRIPTION
\fBslpkg\fP is a terminal multitool in order to easy use Slackware packages.
@ -38,6 +44,8 @@ Slpkg is a user-friendly package manager for Slackware installations
Commands:
update update all package lists
re-create recreate package lists
repo-add [repository name] [URL] add custom repository
repo-remove [repository] remove custom repository
repolist list all repositories
repoinfo [repository] repository information
update slpkg check and update slpkg
@ -45,25 +53,25 @@ Commands:
Optional arguments:
-h, --help show this help message and exit
-v, --version print version and exit
-a, script.tar.gz [source...] auto build SBo packages
-a, [script.tar.gz] [source...] auto build SBo packages
-b, --list, [package...] --add, --remove add, remove packages in blacklist
-q, --list, [package...] --add, --remove add, remove SBo packages in queue
--build, --install, --build-install build, install packages from queue
-q, --build, --install, --build-install build, install packages from queue
-g, --config, --config=<editor> configuration file management
-l, [repository], all list of installed packages
-l, all, official, non-official, --index list of installed packages
-c, [repository] --upgrade check for updated packages
-s, [repository] [package] download, build & install
-t, [repository] [package] tracking dependencies
-p, [repository] [package], --color=[] print package description
-f, [package] find installed packages
-n, [package] view SBo packages through network
-f, [package...] find installed packages
-i, [package...] install binary packages
-u, [package...] upgrade binary packages
-o, [package...] reinstall binary packages
-r, [package...] remove binary packages
-d, [package...] display the contents
.SH REPOSITORIES
.SH DEFAULT REPOSITORIES
slackware.com = 'slack'
SlackBuilds.org = 'sbo'
Alien's = 'alien'
@ -77,9 +85,11 @@ Optional arguments:
Slacke E17 and E18 = 'slacke{18}'
SalixOS = 'salix'
Slackel.gr = 'slackel'
Alien's restricted = 'rested'
Default enable repository is 'slack' and 'sbo'.
Add or remove repository in configuration file '/etc/slpkg/slpkg.conf'
Add or remove default repository in configuration file '/etc/slpkg/slpkg.conf'.
Read REPOSITORIES file for explanations.
.SH COLORS
red, green, yellow, cyan, grey
@ -92,25 +102,37 @@ Print the version of program and exit.
.PP
The following commands are available.
.SS update
.SS update, create and update packages list
\fBslpkg\fP \fBupdate\fP
.PP
Used to re-synchronize the package lists and create some important files.
This command must run every new repository is added or new updates is available.
.SS re-create
.SS re-create, recreate packages list
\fBslpkg\fP \fBre-create\fP
.PP
It is sometimes useful to create all of the base file from the beginning so this
command deletes all the packages lists and re-created.
.SS repolist
\fBslpkg\fP \fBrepolist\fP
.SS repo-add, add custom repository
\fBslpkg\fP \fBrepo-add\fP <\fIrepository name\fP> <\fIURL\fP>
.PP
Add custom binary repository. The repositories will be added to this command should
contain at least the files 'PACKAGES.TXT' and 'CHECKSUMS.md5' and optional file
ChangeLog.txt.
.SS repo-remove, remove custom repository
\fBslpkg\fP \fBrepo-remove\fP <\fIrepository\fP>
.PP
Remove custom repository by name.
.SS repo-list, repositories list
\fBslpkg\fP \fBrepo-list\fP
.PP
Lists all enabled or disabled repositories.
.SS repoinfo
\fBslpkg\fP \fBrepoinfo\fP <\fBrepository\fP>
.SS repo-info, repository information
\fBslpkg\fP \fBrepo-info\fP <\fBrepository\fP>
.PP
View repository information.
@ -144,10 +166,11 @@ Build or install or build and install packages are queued.
.PP
Print configuration file or edit with editor.
.SS -l , list of installed packages per repository
\fBslpkg\fP \fB-l\fP <\fIrepository\fP> \fIall\fP \fInoarch\fP
.SS -l , list of installed packages
\fBslpkg\fP \fB-l\fP <\fIall\fP> \fIofficial\fP \fInon-official\fP \fI--index\fP
.PP
List of installed packages per repository or all.
List of installed packages by category official or non-official. The repository 'slack' must
be enabled to work properly 'official' and 'non-official' lists.
.SS -c , check if your packages is up to date
\fBslpkg\fP \fB-c\fP <\fIrepository\fP> \fI--upgrade\f
@ -174,7 +197,7 @@ The sequence shown is that you must follow to correctly install package.
Print package description with color. Available colors: red, green, yellow, cyan, grey
.SS -f find packages
\fBslpkg\fP \fB-f\fP <\fIname of package\fP>
\fBslpkg\fP \fB-f\fP <\fIname of packages\fP>
.PP
Find installed packages with view total file size.
@ -241,12 +264,18 @@ For example:
/etc/slpkg/slackware-mirrors
List of Slackware Mirrors
/etc/slpkg/custom-repositories
List of custom repositories
/var/log/slpkg
ChangeLog.txt repositories files
SlackBuilds logs and dependencies files
/var/lib/slpkg
PACKAGES.TXT files and SLACKBUILDS.TXT file
PACKAGES.TXT files
SLACKBUILDS.TXT files
CHECKSUMS.md5 files
FILELIST.TXT files
/tmp/slpkg
Slpkg temponary donwloaded files and build packages

View file

@ -90,7 +90,8 @@ if "install" in sys.argv:
conf_file = [
'conf/slpkg.conf',
'conf/blacklist',
'conf/slackware-mirrors'
'conf/slackware-mirrors',
'conf/custom-repositories'
]
if not os.path.exists(conf_path):
os.system("mkdir -p {0}".format(conf_path))

View file

@ -8,7 +8,7 @@ config() {
fi
}
CONFIGS="slpkg.conf blacklist slackware-mirrors"
CONFIGS="slpkg.conf blacklist slackware-mirrors custom-repositories"
for file in $CONFIGS; do
config etc/slpkg/${file}.new
done

View file

@ -23,7 +23,7 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PRGNAM=slpkg
VERSION=${VERSION:-2.1.5}
VERSION=${VERSION:-2.1.x-dev}
BUILD=${BUILD:-1}
TAG=${TAG:-_dsw}
@ -79,7 +79,7 @@ find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | gr
mkdir -p $PKG/etc/slpkg
# install configurations files
CONFIGS="slpkg.conf blacklist slackware-mirrors"
CONFIGS="slpkg.conf blacklist slackware-mirrors custom-repositories"
for file in $CONFIGS; do
install -D -m0644 conf/$file $PKG/etc/slpkg/${file}.new
done

View file

@ -30,11 +30,13 @@ __version__ = "{0}.{1}.{2}".format(*__version_info__)
__license__ = "GNU General Public License v3 (GPLv3)"
__email__ = "d.zlatanidis@gmail.com"
# temponary path
tmp = "/tmp/"
# Default configuration values
slack_rel = "stable"
# Configuration path
conf_path = "/etc/{0}/".format(__all__)
repositories = [
'slack',
'sbo',
@ -48,9 +50,30 @@ repositories = [
'multi',
'slacke{18}',
'salix',
'slackl'
'slackl',
'rested'
]
default_repositories = repositories[8] = 'ktown'
default_repositories = repositories[10] = 'slacke'
default_repositories = repositories
def update_repositories(repositories):
'''
Upadate with user custom repositories
'''
repo_file = "{0}custom-repositories".format(conf_path)
if os.path.isfile(repo_file):
f = open(repo_file, "r")
repositories_list = f.read()
f.close()
for line in repositories_list.splitlines():
line = line.lstrip()
if line and not line.startswith("#"):
repositories.append(line.split()[0])
return repositories
def ktown_repo(repositories):
'''
@ -75,6 +98,8 @@ def slacke_repo(repositories):
repositories[i] = 'slacke'
return sub
tmp = "/tmp/"
tmp_path = "{0}{1}/".format(tmp, __all__)
build_path = "/tmp/slpkg/build/"
slpkg_tmp_packages = tmp + "slpkg/packages/"
slpkg_tmp_patches = tmp + "slpkg/patches/"
@ -87,6 +112,7 @@ remove_deps_answer = "n"
skip_unst = "n"
del_deps = "on"
use_colors = "on"
wget_option = '-c -N'
if os.path.isfile("/etc/slpkg/slpkg.conf"):
f = open("/etc/slpkg/slpkg.conf", "r")
@ -124,9 +150,13 @@ if os.path.isfile("/etc/slpkg/slpkg.conf"):
del_deps = line[9:].strip()
if line.startswith("USE_COLORS"):
use_colors = line[11:].strip()
if line.startswith("WGET_OPTION"):
wget_option = line[12:].strip()
ktown_kde_repo = ktown_repo(repositories)
slacke_sub_repo = slacke_repo(repositories)
update_repositories(repositories)
color = {
'RED': '\x1b[31m',
@ -147,6 +177,9 @@ if use_colors == "off":
'ENDC': ''
}
CHECKSUMS_link = ("https://raw.githubusercontent.com/{0}/{1}/"
"master/CHECKSUMS.md5".format(__author__, __all__))
# file spacer
sp = "-"

View file

@ -33,38 +33,40 @@ from __metadata__ import (
def options():
arguments = [
"\nslpkg - version {0}\n".format(__version__),
"Slpkg is a user-friendly package manager for Slackware " +
"Slpkg is a user-friendly package manager for Slackware "
"installations\n",
"Commands:",
" update update all package " +
" update update all package "
"lists",
" re-create recreate package lists",
" repolist list all repositories",
" repoinfo [repository] repository information",
" repo-add [repository name] [URL] add custom repository",
" repo-remove [repository] remove custom repository",
" repo-list list all repositories",
" repo-info [repository] repository information",
" update slpkg check and update slpkg\n",
"Optional arguments:",
" -h, --help show this help message " +
" -h, --help show this help message "
"and exit",
" -v, --version print version and exit",
" -a, script.tar.gz [source...] auto build SBo packages",
" -b, --list, [package...] --add, --remove add, remove packages in " +
" -a, [script.tar.gz] [source...] auto build SBo packages",
" -b, --list, [package...] --add, --remove add, remove packages in "
"blacklist",
" -q, --list, [package...] --add, --remove add, remove SBo packages "
"in queue",
" --build, --install, --build-install build, install packages "
" -q, --build, --install, --build-install build, install packages "
"from queue",
" -g, --config, --config=[editor] configuration file " +
" -g, --config, --config=[editor] configuration file "
"management",
" -l, [repository], all list of installed " +
" -l, all, official, non-official, --index list of installed "
"packages",
" -c, [repository] --upgrade check for updated " +
" -c, [repository] --upgrade check for updated "
"packages",
" -s, [repository] [package] download, build & install",
" -t, [repository] [package] tracking dependencies",
" -p, [repository] [package], --color=[] print package description",
" -f, [package] find installed packages",
" -n, [package] view SBo packages "
"through network",
" -f, [package...] find installed packages",
" -i, [package...] install binary packages",
" -u, [package...] upgrade binary packages",
" -o, [package...] reinstall binary packages",
@ -89,17 +91,22 @@ def usage(repo):
"\n".format(repo))
view = [
"slpkg - version {0}\n".format(__version__),
"Usage: slpkg [-h] [-v] [-a script.tar.gz [sources...]]",
"Usage: slpkg Commands:",
" [update] [re-create] [repo-add [repository name] [URL]]",
" [repo-remove [repository]] [repo-list]",
" [repo-info [repository]] [update [slpkg]]\n",
" Optional arguments:",
" [-h] [-v] [-a [script.tar.gz] [sources...]]",
" [-b --list, [...] --add, --remove]",
" [-q --list, [...] --add, --remove]",
" [ --build, --install, --build-install]",
" [-q --build, --install, --build-install]",
" [-g --config, --config=[editor]]",
" [-l [repository], all]",
" [-l all, official, non-official, --index]",
" [-c [repository] --upgrade]",
" [-s [repository] [package]",
" [-t [repository] [package]",
" [-p [repository] [package], --color=[]]",
" [-f] [-n] [-i [...]] [-u [...]]",
" [-n] [-f [...]] [-i [...]] [-u [...]]",
" [-o [...]] [-r [...]] [-d [...]]\n",
error_repo,
"For more information try 'slpkg --help' or view manpage\n"

View file

@ -50,7 +50,8 @@ class Config(object):
'REMOVE_DEPS_ANSWER',
'SKIP_UNST',
'DEL_DEPS',
'USE_COLORS'
'USE_COLORS',
'WGET_OPTION'
]
f = open(self.config_file, "r")
read_conf = f.read()

View file

@ -24,7 +24,10 @@
import sys
import subprocess
from __metadata__ import color
from __metadata__ import (
color,
wget_option
)
class Download(object):
@ -45,8 +48,8 @@ class Download(object):
color['ENDC'],
file_name))
try:
subprocess.call("wget -c -N --directory-prefix={0} {1}".format(
self.path, dwn), shell=True)
subprocess.call("wget {0} --directory-prefix={1} {2}".format(
wget_option, self.path, dwn), shell=True)
except KeyboardInterrupt:
print # new line at cancel
sys.exit(0)

View file

@ -40,8 +40,7 @@ class FileSize(object):
meta = tar.info()
return int(meta.getheaders("Content-Length")[0])
except (urllib2.URLError, IndexError):
print("\nError: connection refused\n")
sys.exit(0)
return ' '
except KeyboardInterrupt:
print("") # new line at cancel
sys.exit(0)

View file

@ -25,6 +25,7 @@ from slack.mirrors import mirrors
from url_read import URL
from __metadata__ import (
CHECKSUMS_link,
lib_path,
slack_rel
)
@ -39,6 +40,8 @@ def pkg_checksum(binary, repo):
CHECKSUMS_md5 = URL(mirrors("CHECKSUMS.md5", "patches/")).reading()
elif repo == "slack_patches" and slack_rel == "current":
CHECKSUMS_md5 = URL(mirrors("CHECKSUMS.md5", "")).reading()
elif repo == "slpkg":
CHECKSUMS_md5 = URL(CHECKSUMS_link).reading()
else:
lib = '{0}{1}_repo/CHECKSUMS.md5'.format(lib_path, repo)
f = open(lib, "r")

View file

@ -32,11 +32,14 @@ from __metadata__ import (
color,
log_path,
lib_path,
tmp_path,
conf_path,
build_path,
repositories,
slpkg_tmp_packages,
slpkg_tmp_patches,
slacke_sub_repo
slacke_sub_repo,
default_repositories
)
from slack.mirrors import mirrors
@ -46,14 +49,14 @@ from slack.slack_version import slack_ver
class Initialization(object):
def __init__(self):
if not os.path.exists("/etc/slpkg/"):
os.mkdir("/etc/slpkg/")
if not os.path.exists(conf_path):
os.mkdir(conf_path)
if not os.path.exists(log_path):
os.mkdir(log_path)
if not os.path.exists(lib_path):
os.mkdir(lib_path)
if not os.path.exists("/tmp/slpkg/"):
os.mkdir("/tmp/slpkg/")
if not os.path.exists(tmp_path):
os.mkdir(tmp_path)
if not os.path.exists(build_path):
os.makedirs(build_path)
if not os.path.exists(slpkg_tmp_packages):
@ -61,6 +64,32 @@ class Initialization(object):
if not os.path.exists(slpkg_tmp_patches):
os.makedirs(slpkg_tmp_patches)
def custom(self, name):
'''
Creating user select repository local library
'''
repo = Repo().custom_repository()[name]
log = log_path + name + "/"
lib = lib_path + "{0}_repo/".format(name)
lib_file = "PACKAGES.TXT"
lst_file = ""
md5_file = "CHECKSUMS.md5"
log_file = "ChangeLog.txt"
if not os.path.exists(log):
os.mkdir(log)
if not os.path.exists(lib):
os.mkdir(lib)
packages_txt = "{0}{1}".format(repo, lib_file)
filelist_txt = ""
checksums_md5 = "{0}{1}".format(repo, md5_file)
changelog_txt = "{0}{1}".format(repo, log_file)
self.write(lib, lib_file, packages_txt)
self.write(lib, md5_file, checksums_md5)
self.write(log, log_file, changelog_txt)
self.remote(log, log_file, changelog_txt, lib, lib_file,
packages_txt, md5_file, checksums_md5, lst_file,
filelist_txt)
def slack(self):
'''
Creating slack local libraries
@ -82,10 +111,12 @@ class Initialization(object):
ext_checksums = mirrors(md5_file, "extra/")
pasture = mirrors(lib_file, "pasture/")
pas_checksums = mirrors(md5_file, "pasture/")
packages_txt = ("{0} {1} {2}".format(packages, extra, pasture))
checksums_md5 = ("{0} {1} {2}".format(pkg_checksums, ext_checksums,
pas_checksums))
patches_txt = mirrors(lib_file, "patches/")
patches_md5 = mirrors(md5_file, "patches/")
packages_txt = ("{0} {1} {2} {3}".format(packages, extra, pasture,
patches_txt))
checksums_md5 = ("{0} {1} {2} {3}".format(pkg_checksums, ext_checksums,
pas_checksums, patches_md5))
changelog_txt = mirrors(log_file, "")
self.write(lib, lib_file, packages_txt)
self.write(lib, md5_file, checksums_md5)
@ -431,6 +462,31 @@ class Initialization(object):
self.remote(log, log_file, changelog_txt, lib, lib_file, packages_txt,
md5_file, checksums_md5, lst_file, filelist_txt)
def rested(self):
'''
Creating alien local library
'''
repo = Repo().restricted()
log = log_path + "rested/"
lib = lib_path + "rested_repo/"
lib_file = "PACKAGES.TXT"
lst_file = ""
md5_file = "CHECKSUMS.md5"
log_file = "ChangeLog.txt"
if not os.path.exists(log):
os.mkdir(log)
if not os.path.exists(lib):
os.mkdir(lib)
packages_txt = "{0}{1}".format(repo, lib_file)
filelist_txt = ""
checksums_md5 = "{0}{1}".format(repo, md5_file)
changelog_txt = "{0}{1}".format(repo, log_file)
self.write(lib, lib_file, packages_txt)
self.write(lib, md5_file, checksums_md5)
self.write(log, log_file, changelog_txt)
self.remote(log, log_file, changelog_txt, lib, lib_file, packages_txt,
md5_file, checksums_md5, lst_file, filelist_txt)
@staticmethod
def write(path, data_file, file_url):
'''
@ -481,6 +537,7 @@ class Initialization(object):
# remove FILELIST.TXT
if args[8]:
os.remove("{0}{1}".format(args[3], args[8]))
# read URL's
for fu in args[5].split():
PACKAGES_TXT += URL(fu).reading()
CHANGELOG_TXT = URL(args[2]).reading()
@ -547,7 +604,10 @@ class Update(object):
sys.stdout.write("{0}Update repository {1} ...{2}".format(
color['GREY'], repo, color['ENDC']))
sys.stdout.flush()
exec('{0}.{1}()'.format(self._init, repo))
if repo in default_repositories:
exec('{0}.{1}()'.format(self._init, repo))
else:
Initialization().custom(repo)
sys.stdout.write("{0}Done{1}\n".format(color['GREY'],
color['ENDC']))
print("") # new line at end
@ -556,12 +616,16 @@ class Update(object):
def check_exists_repositories():
'''
Checking if repositories exists by ChangeLog.txt file
Checking if repositories exists by PACKAGES.TXT file
'''
update = False
pkg_list = "PACKAGES.TXT"
for repo in repositories:
if not os.path.isfile("{0}{1}{2}".format(log_path, repo,
"/ChangeLog.txt")):
pkg_list = "PACKAGES.TXT"
if repo == "sbo":
pkg_list = "SLACKBUILDS.TXT"
if not os.path.isfile("{0}{1}{2}".format(lib_path, repo,
"_repo/{0}".format(pkg_list))):
update = True
if update:
print("\n Please update packages lists. Run 'slpkg update'.\n" +

View file

@ -24,13 +24,13 @@
import sys
import getpass
from repoinfo import RepoInfo
from repolist import RepoList
from desc import PkgDesc
from config import Config
from queue import QueuePkgs
from messages import s_user
from repoinfo import RepoInfo
from repolist import RepoList
from repositories import Repo
from tracking import track_dep
from blacklist import BlackList
from version import prog_version
@ -94,7 +94,8 @@ def main():
queue = QueuePkgs()
# all_args = [
# 'update', 're-create', 'repolist', 'repoinfo',
# 'update', 're-create', 'repo-add', 'repo-remove',
# 'repo-list', 'repo-info',
# '-h', '--help', '-v', '-a', '-b',
# '-q', '-g', '-l', '-c', '-s', '-t', '-p', '-f',
# '-n', '-i', '-u', '-o', '-r', '-d'
@ -112,7 +113,7 @@ def main():
if len(args) == 2 and args[0] == "update" and args[1] == "slpkg":
it_self_update()
if len(args) == 1 and args[0] == "repolist":
if len(args) == 1 and args[0] == "repo-list":
RepoList().repos()
if len(args) == 0:
@ -125,26 +126,36 @@ def main():
args[0] == "--version" and args[1:] == []):
prog_version()
if len(args) == 3 and args[0] == "repo-add":
Repo().add(args[1], args[2])
if len(args) == 2 and args[0] == "repo-remove":
Repo().remove(args[1])
# checking if repositories exists
check_exists_repositories()
if len(args) == 1 and args[0] == "re-create":
Initialization().re_create()
if (len(args) == 2 and args[0] == "repoinfo" and
if (len(args) == 2 and args[0] == "repo-info" and
args[1] in RepoList().all_repos):
del RepoList().all_repos
RepoInfo().view(args[1])
elif (len(args) == 2 and args[0] == "repoinfo" and
elif (len(args) == 2 and args[0] == "repo-info" and
args[1] not in RepoList().all_repos):
usage(args[1])
if len(args) == 3 and args[0] == "-a":
BuildPackage(args[1], args[2:], path).build()
elif len(args) == 2 and args[0] == "-l":
pkg_list = ["all"] + repositories
if args[1] in pkg_list:
PackageManager(None).list(args[1])
if args[1] in ['all', 'official', 'non-official']:
PackageManager(None).list(args[1], False)
else:
usage('')
elif len(args) == 3 and args[0] == "-l" and args[2] == '--index':
if args[1] in ['all', 'official', 'non-official']:
PackageManager(None).list(args[1], True)
else:
usage('')
elif len(args) == 3 and args[0] == "-c" and args[2] == "--upgrade":
@ -200,7 +211,7 @@ def main():
PackageManager(args[1:]).reinstall()
elif len(args) > 1 and args[0] == "-r":
PackageManager(args[1:]).remove()
elif len(args) == 2 and args[0] == "-f":
elif len(args) > 1 and args[0] == "-f":
PackageManager(args[1:]).find()
elif len(args) == 3 and args[0] == "-p" and args[1] in repositories:
PkgDesc(args[2], args[1], "").view()

View file

@ -40,7 +40,8 @@ from slpkg.__metadata__ import (
slpkg_tmp_packages,
default_answer,
color,
slacke_sub_repo
slacke_sub_repo,
default_repositories
)
from slpkg.pkg.find import find_package
@ -62,12 +63,19 @@ class OthersUpgrade(object):
sys.stdout.flush()
self.step = 700
exec('self._init_{0}()'.format(self.repo))
if repo in default_repositories:
exec('self._init_{0}()'.format(self.repo))
else:
exec('self._init_custom()')
f = open(self.lib, "r")
self.PACKAGES_TXT = f.read()
f.close()
def _init_custom(self):
self.lib = lib_path + "{0}_repo/PACKAGES.TXT".format(self.repo)
self.mirror = "{0}".format(Repo().custom_repository()[self.repo])
def _init_rlw(self):
self.lib = lib_path + "rlw_repo/PACKAGES.TXT"
self.mirror = "{0}{1}/".format(Repo().rlw(), slack_ver())
@ -145,6 +153,11 @@ class OthersUpgrade(object):
self.mirror = "{0}{1}/current/".format(Repo().slackel(), arch)
self.step = self.step * 2
def _init_rested(self):
self.lib = lib_path + "rested_repo/PACKAGES.TXT"
self.mirror = Repo().restricted()
self.step = self.step * 2
def start(self):
'''
Install packages from official Slackware distribution

View file

@ -24,7 +24,6 @@
import os
from slpkg.toolbar import status
from slpkg.splitting import split_package
from slpkg.slack.slack_version import slack_ver
from slpkg.__metadata__ import (
lib_path,
@ -59,7 +58,7 @@ def repo_data(PACKAGES_TXT, step, repo, version):
rsize,
runsize
) = rlw_filter(name, location, size, unsize)
elif repo == "alien":
elif repo == "alien" or repo == "rested":
(rname,
rlocation,
rsize,
@ -77,8 +76,7 @@ def repo_data(PACKAGES_TXT, step, repo, version):
rsize,
runsize
) = multi_filter(name, location, size, unsize, version)
elif repo in ["slacky", "studio", "slackr", "slonly", "slacke",
"salix", "slackl"]:
else:
rname, rlocation, rsize, runsize = name, location, size, unsize
return [rname, rlocation, rsize, runsize]
@ -187,29 +185,7 @@ class Requires(object):
'''
Grap package requirements from repositories
'''
if self.repo in ["alien", "slacky", "slackr", "salix", "slackl"]:
lib = '{0}{1}_repo/PACKAGES.TXT'.format(lib_path, self.repo)
f = open(lib, "r")
PACKAGES_TXT = f.read()
f.close()
for line in PACKAGES_TXT.splitlines():
if line.startswith("PACKAGE NAME: "):
if self.repo == "slackr":
pkg_name = line[14:].strip()
else:
pkg = line[14:].strip()
pkg_name = split_package(pkg)[0]
if line.startswith("PACKAGE REQUIRED: "):
if pkg_name == self.name:
if line[17:].strip():
if self.repo in ["slacky", "salix", "slackl"]:
return self._req_fix(line)
elif self.repo == "alien":
return line[18:].strip().split(",")
else:
return line[18:].strip().split()
elif self.repo == "rlw":
if self.repo == "rlw":
# Robby's repository dependencies as shown in the central page
# http://rlworkman.net/pkgs/
dependencies = {
@ -224,6 +200,18 @@ class Requires(object):
return dependencies[self.name].split()
else:
return ""
else:
lib = '{0}{1}_repo/PACKAGES.TXT'.format(lib_path, self.repo)
f = open(lib, "r")
PACKAGES_TXT = f.read()
f.close()
for line in PACKAGES_TXT.splitlines():
if line.startswith("PACKAGE NAME: "):
pkg_name = line[14:].strip().split('-')[0]
if line.startswith("PACKAGE REQUIRED: "):
if pkg_name == self.name:
if line[17:].strip():
return self._req_fix(line)
def _req_fix(self, line):
'''
@ -231,7 +219,7 @@ class Requires(object):
with ',' and others with '|'
'''
deps = []
for dep in line[18:].strip().split(","):
for dep in line[18:].strip().split(','):
dep = dep.split("|")
if self.repo == 'slacky':
if len(dep) > 1:

View file

@ -43,7 +43,8 @@ from slpkg.__metadata__ import (
slpkg_tmp_packages,
default_answer,
color,
slacke_sub_repo
slacke_sub_repo,
default_repositories
)
from slpkg.pkg.find import find_package
@ -69,13 +70,20 @@ class OthersInstall(object):
sys.stdout.flush()
self.step = 700
exec('self._init_{0}()'.format(self.repo))
if repo in default_repositories:
exec('self._init_{0}()'.format(self.repo))
else:
exec('self._init_custom()')
f = open(self.lib, "r")
self.PACKAGES_TXT = f.read()
f.close()
sys.stdout.write("{0}Done{1}\n".format(color['GREY'], color['ENDC']))
def _init_custom(self):
self.lib = lib_path + "{0}_repo/PACKAGES.TXT".format(self.repo)
self.mirror = "{0}".format(Repo().custom_repository()[self.repo])
def _init_rlw(self):
self.lib = lib_path + "rlw_repo/PACKAGES.TXT"
self.mirror = "{0}{1}/".format(Repo().rlw(), slack_ver())
@ -153,6 +161,11 @@ class OthersInstall(object):
self.mirror = "{0}{1}/current/".format(Repo().slackel(), arch)
self.step = self.step * 2
def _init_rested(self):
self.lib = lib_path + "rested_repo/PACKAGES.TXT"
self.mirror = Repo().restricted()
self.step = self.step * 2
def start(self):
'''
Install packages from official Slackware distribution
@ -161,6 +174,7 @@ class OthersInstall(object):
dependencies = resolving_deps(self.package, self.repo)
(dwn_links, install_all, comp_sum, uncomp_sum
) = self.store(dependencies)
dependencies = equal_deps_and_install(dependencies, install_all)
sys.stdout.write("{0}Done{1}\n".format(color['GREY'],
color['ENDC']))
print("") # new line at start
@ -246,6 +260,21 @@ class OthersInstall(object):
return [dwn, install, comp_sum, uncomp_sum]
def equal_deps_and_install(dependencies, install_all):
'''
This fixes be written dependencies equal to those that
will be installed because some repositories like 'salix'
said dependencies that exist in the distribution but not
in the repository itself.
'''
deps = []
for dep in dependencies:
for inst in install_all:
if inst.startswith(dep + '-'):
deps.append(dep)
return deps
def views(install_all, comp_sum, repository, dependencies):
'''
Views packages
@ -347,15 +376,16 @@ def write_deps(dependencies):
Write dependencies in a log file
into directory `/var/log/slpkg/dep/`
'''
name = dependencies[-1]
if find_package(name + "-", pkg_path):
dep_path = log_path + "dep/"
if not os.path.exists(dep_path):
os.mkdir(dep_path)
if os.path.isfile(dep_path + name):
os.remove(dep_path + name)
if len(dependencies[:-1]) > 0:
with open(dep_path + name, "w") as f:
for dep in dependencies[:-1]:
f.write(dep + "\n")
if len(dependencies) > 1:
name = dependencies[-1]
if find_package(name + "-", pkg_path):
dep_path = log_path + "dep/"
if not os.path.exists(dep_path):
os.mkdir(dep_path)
if os.path.isfile(dep_path + name):
os.remove(dep_path + name)
if len(dependencies[:-1]) > 0:
with open(dep_path + name, "w") as f:
for dep in dependencies[:-1]:
f.write(dep + "\n")
f.close()

View file

@ -30,6 +30,7 @@ from slpkg.messages import (
template
)
from slpkg.__metadata__ import (
lib_path,
pkg_path,
sp,
log_path,
@ -40,7 +41,6 @@ from slpkg.__metadata__ import (
)
from slpkg.pkg.find import find_package
from slpkg.slack.slack_version import slack_ver
class PackageManager(object):
@ -230,34 +230,35 @@ class PackageManager(object):
'''
matching = size = 0
print("\nPackages with matching name [ {0}{1}{2} ]\n".format(
color['CYAN'], ''.join(self.binary), color['ENDC']))
for match in find_package(''.join(self.binary), pkg_path):
if ''.join(self.binary) in match:
matching += 1
print("[ {0}installed{1} ] - {2}".format(
color['GREEN'], color['ENDC'], match))
with open(pkg_path + match, "r") as f:
data = f.read()
f.close()
for line in data.splitlines():
if line.startswith("UNCOMPRESSED PACKAGE SIZE:"):
if "M" in line[26:]:
size += float(line[26:-1]) * 1024
else:
size += float(line[26:-1])
break
color['CYAN'], ', '.join(self.binary), color['ENDC']))
for pkg in self.binary:
for match in find_package(pkg, pkg_path):
if pkg in match:
matching += 1
print("[ {0}installed{1} ] - {2}".format(
color['GREEN'], color['ENDC'], match))
with open(pkg_path + match, "r") as f:
data = f.read()
f.close()
for line in data.splitlines():
if line.startswith("UNCOMPRESSED PACKAGE SIZE:"):
if "M" in line[26:]:
size += float(line[26:-1]) * 1024
else:
size += float(line[26:-1])
break
if matching == 0:
message = "Can't find"
pkg_not_found("", self.binary, message, "\n")
pkg_not_found("", pkg, message, "\n")
else:
print("\n{0}Total found {1} matching packages.{2}".format(
color['GREY'], matching, color['ENDC']))
color['GREY'], matching, color['ENDC']))
unit = "Kb"
if size > 1024:
unit = "Mb"
size = (size / 1024)
print("{0}Size of installed packages {1} {2}.{3}\n".format(
color['GREY'], round(size, 2), unit, color['ENDC']))
color['GREY'], round(size, 2), unit, color['ENDC']))
def display(self):
'''
@ -278,46 +279,44 @@ class PackageManager(object):
bol = eol = "\n"
pkg_not_found(bol, pkg, message, eol)
def list(self, pattern):
def list(self, pattern, INDEX):
'''
List with the installed packages
'''
tty_size = os.popen('stty size', 'r').read().split()
row = int(tty_size[0]) - 2
pkg_list = []
try:
pkg_list = {
'sbo': ['_SBo'],
'slack': ['_slack{0}'.format(slack_ver())],
'rlw': ['_rlw'],
'alien': ['alien'],
'slacky': ['sl'],
'studio': ['se'],
'slackr': ['cf'],
'slonly': ['_slack'],
'ktown': ['alien'],
'multi': ['alien', 'alien_slack{0}'.format(slack_ver()),
'compat32'],
'slacke': ['jp'],
'salix': ['gv', 'rl', 'msb', 'dj', 'tg', 'cp', 'tjb', 'alien'],
'slackl': [''],
'all': ['']
}
search = pkg_list[pattern]
index, page = 0, row
index, page, official, r = 0, row, [], ''
if os.path.isfile(lib_path + 'slack_repo/PACKAGES.TXT'):
f = open(lib_path + 'slack_repo/PACKAGES.TXT', 'r')
r = f.read()
f.close()
for line in r.splitlines():
if line.startswith("PACKAGE NAME: "):
official.append(line[15:-4].strip())
for pkg in find_package("", pkg_path):
for tag in search:
if pkg.endswith(tag):
index += 1
print("{0}{1}:{2} {3}".format(color['GREY'], index,
color['ENDC'], pkg))
if index == page:
read = raw_input("\nPress {0}Enter{1} to "
"continue... ".format(
color['CYAN'], color['ENDC']))
if read in ['Q', 'q']:
break
print("") # new line after page
page += row
if pattern == 'all':
pkg_list.append(pkg)
elif pattern == 'official' and pkg in official:
pkg_list.append(pkg)
elif pattern == 'non-official' and pkg not in official:
pkg_list.append(pkg)
for pkg in sorted(pkg_list):
if INDEX:
index += 1
print("{0}{1}:{2} {3}".format(color['GREY'], index,
color['ENDC'], pkg))
if index == page:
read = raw_input("\nPress {0}Enter{1} to "
"continue... ".format(color['CYAN'],
color['ENDC']))
if read in ['Q', 'q']:
break
print("") # new line after page
page += row
else:
print pkg
print("") # new line at end
except KeyboardInterrupt:
print("") # new line at exit

View file

@ -22,6 +22,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
from collections import OrderedDict
from downloader import Download
from __metadata__ import (
@ -96,7 +97,7 @@ class QueuePkgs(object):
Add packages in queue if not exist
'''
queue_list = self.packages()
pkgs = set(pkgs)
pkgs = list(OrderedDict.fromkeys(pkgs))
print("\nAdd packages in queue:\n")
with open(self.queue_list, "a") as queue:
for pkg in pkgs:
@ -146,9 +147,9 @@ class QueuePkgs(object):
sources = []
os.chdir(build_path)
script = sbo_dwn.split("/")[-1]
Download(build_path, sbo_dwn).start()
Download(build_path, sbo_dwn.split()).start()
for src in source_dwn:
Download(build_path, src).start()
Download(build_path, src.split()).start()
sources.append(src.split("/")[-1])
BuildPackage(script, sources, build_path).build()
else:

View file

@ -24,9 +24,11 @@
import os
import sys
from repositories import Repo
from sizes import units
from repolist import RepoList
from __metadata__ import (
default_repositories,
lib_path,
log_path,
repositories,
@ -41,6 +43,7 @@ class RepoInfo(object):
'Last updated:': '',
'Number of packages:': '',
'Repo id:': '',
'Default:': '',
'Repo url:': '',
'Status:': '',
'Total compressed packages:': '',
@ -48,6 +51,7 @@ class RepoInfo(object):
}
self.all_repos = RepoList().all_repos
self.all_repos.update(Repo().custom_repository())
del RepoList().all_repos
def view(self, repo):
@ -56,8 +60,12 @@ class RepoInfo(object):
'''
status = '{0}disabled{1}'.format(color['RED'], color['ENDC'])
self.form['Status:'] = status
self.form['Default:'] = 'no'
if repo in default_repositories:
self.form['Default:'] = 'yes'
if (repo in repositories and
os.path.isfile(log_path + '{0}/ChangeLog.txt'.format(repo))):
os.path.isfile(lib_path + '{0}_repo/PACKAGES.TXT'.format(
repo))):
status = '{0}enabled{1}'.format(color['GREEN'], color['ENDC'])
if repo != 'sbo':
data = self.repository_data(repo)
@ -71,20 +79,22 @@ class RepoInfo(object):
self.form['Number of packages:'] = data[0]
self.form['Status:'] = status
self.form['Last updated:'] = data[3]
elif repo == 'sbo':
sum_sbo_pkgs = 0
for line in open(lib_path + 'sbo_repo/SLACKBUILDS.TXT', 'r'):
if line.startswith('SLACKBUILD NAME: '):
sum_sbo_pkgs += 1
with open(log_path + 'sbo/ChangeLog.txt', 'r') as changelog_txt:
last_upd = changelog_txt.readline().replace('\n', '')
self.form['Repo id:'] = repo
self.form['Repo url:'] = self.all_repos[repo]
self.form['Total compressed packages:'] = ''
self.form['Total uncompressed packages:'] = ''
self.form['Number of packages:'] = sum_sbo_pkgs
self.form['Status:'] = status
self.form['Last updated:'] = last_upd
elif (repo == 'sbo' and os.path.isfile(lib_path + '{0}_repo/'
'SLACKBUILDS.TXT'.format(repo))):
status = '{0}enabled{1}'.format(color['GREEN'], color['ENDC'])
sum_sbo_pkgs = 0
for line in open(lib_path + 'sbo_repo/SLACKBUILDS.TXT', 'r'):
if line.startswith('SLACKBUILD NAME: '):
sum_sbo_pkgs += 1
with open(log_path + 'sbo/ChangeLog.txt', 'r') as changelog_txt:
last_upd = changelog_txt.readline().replace('\n', '')
self.form['Repo id:'] = repo
self.form['Repo url:'] = self.all_repos[repo]
self.form['Total compressed packages:'] = ''
self.form['Total uncompressed packages:'] = ''
self.form['Number of packages:'] = sum_sbo_pkgs
self.form['Status:'] = status
self.form['Last updated:'] = last_upd
print('')
for key, value in sorted(self.form.iteritems()):
print color['GREY'] + key + color['ENDC'], value

View file

@ -27,6 +27,7 @@ import sys
from repositories import Repo
from messages import template
from __metadata__ import (
default_repositories,
repositories,
color
)
@ -48,8 +49,10 @@ class RepoList(object):
'multi': Repo().multi(),
'slacke': Repo().slacke(),
'salix': Repo().salix(),
'slackl': Repo().slackel()
'slackl': Repo().slackel(),
'rested': Repo().restricted()
}
self.all_repos.update(Repo().custom_repository())
def repos(self):
'''
@ -57,19 +60,26 @@ class RepoList(object):
'''
print('')
template(78)
print('{0}{1}{2}{3}{4}'.format(
'| Repo id', ' ' * 10,
'Repo name', ' ' * 45,
print('{0}{1}{2}{3}{4}{5}{6}'.format(
'| Repo id', ' ' * 2,
'Repo URL', ' ' * 44,
'Default', ' ' * 3,
'Status'))
template(78)
for repo_id, repo_name in sorted(self.all_repos.iteritems()):
for repo_id, repo_URL in sorted(self.all_repos.iteritems()):
status, COLOR = 'disabled', color['RED']
default = 'yes'
if len(repo_URL) > 49:
repo_URL = repo_URL[:48] + '~'
if repo_id in repositories:
status, COLOR = 'enabled', color['GREEN']
print(' {0}{1}{2}{3}{4}{5:>15}{6}'.format(
repo_id, ' ' * (17 - len(repo_id)),
repo_name, ' ' * (45 - len(repo_name)),
if repo_id not in default_repositories:
default = 'no'
print(' {0}{1}{2}{3}{4}{5}{6}{7:>8}{8}'.format(
repo_id, ' ' * (9 - len(repo_id)),
repo_URL, ' ' * (52 - len(repo_URL)),
default, ' ' * (8 - len(default)),
COLOR, status, color['ENDC']))
print("\nFor enable or disable repositories edit "
print("\nFor enable or disable default repositories edit "
"'/etc/slpkg/slpkg.conf' file\n")
sys.exit(0)

View file

@ -23,12 +23,82 @@
import os
import sys
from __metadata__ import (
default_repositories,
repositories
)
class Repo(object):
def __init__(self):
pass
self.repo_file = "/etc/slpkg/custom-repositories"
f = open(self.repo_file, "r")
self.repositories_list = f.read()
f.close()
def add(self, repo, url):
'''
Write custom repository name and url in a file
'''
repo_name = []
if not url.endswith('/'):
url = url + '/'
for line in self.repositories_list.splitlines():
line = line.lstrip()
if line and not line.startswith("#"):
repo_name.append(line.split()[0])
if (repo in repositories or repo in repo_name or
repo in default_repositories):
print("\nRepository name '{0}' exist, select different name.\n"
"View all repositories with command 'repo-list'.\n".format(
repo))
sys.exit(0)
elif len(repo) > 6:
print("\nMaximum repository name length must be six (6) "
"characters\n")
sys.exit(0)
elif not url.startswith('http') or url.startswith('ftp'):
print("\nWrong type URL '{0}'\n".format(url))
sys.exit(0)
with open(self.repo_file, "a") as repos:
new_line = " {0}{1}{2}\n".format(repo, ' ' * (10 - len(repo)), url)
repos.write(new_line)
repos.close()
print("\nRepository '{0}' successfully added\n".format(repo))
sys.exit(0)
def remove(self, repo):
'''
Remove custom repository
'''
rem_repo = False
with open(self.repo_file, "w") as repos:
for line in self.repositories_list.splitlines():
repo_name = line.split()[0]
if repo_name != repo:
repos.write(line + "\n")
else:
print("\nRepository '{0}' successfully "
"removed\n".format(repo))
rem_repo = True
repos.close()
if not rem_repo:
print("\nRepository '{0}' doesn't exist\n".format(repo))
sys.exit(0)
def custom_repository(self):
'''
Return dictionary with repo name and url
'''
dict_repo = {}
for line in self.repositories_list.splitlines():
line = line.lstrip()
if not line.startswith("#"):
dict_repo[line.split()[0]] = line.split()[1]
return dict_repo
def slack(self):
'''
@ -116,3 +186,10 @@ class Repo(object):
Slackel.gr slackel repository
'''
return "http://www.slackel.gr/repo/"
def restricted(self):
'''
Slackel.gr slackel repository
'''
return ("http://taper.alienbase.nl/mirrors/people/alien/"
"restricted_slackbuilds/")

View file

@ -151,7 +151,7 @@ class SBoCheck(object):
def exists(self):
'''
search packages if exists in the repository
Search packages if exists in the repository
and it gets to avoidable modified packages
from the user with the tag _SBo
'''

View file

@ -134,7 +134,7 @@ def views(install_all, comp_sum):
Views packages
'''
pkg_sum = uni_sum = upg_sum = 0
for pkg, comp in zip(install_all, comp_sum):
for pkg, comp in sorted(zip(install_all, comp_sum)):
pkg_split = split_package(pkg[:-4])
if os.path.isfile(pkg_path + pkg[:-4]):
pkg_sum += 1

View file

@ -142,7 +142,8 @@ def views(pkg_for_upgrade, upgrade_all, comp_sum):
'''
Views packages
'''
for upg, upgrade, size in zip(pkg_for_upgrade, upgrade_all, comp_sum):
for upg, upgrade, size in sorted(zip(pkg_for_upgrade, upgrade_all,
comp_sum)):
pkg_split = split_package(upgrade[:-4])
print(" {0}{1}{2}{3} {4}{5} {6}{7}{8}{9}{10}{11:>12}{12}".format(
color['YELLOW'], upg, color['ENDC'],

View file

@ -28,6 +28,8 @@ import sys
import tarfile
import subprocess
from checksum import check_md5
from grep_md5 import pkg_checksum
from url_read import URL
from downloader import Download
from __metadata__ import (
@ -60,7 +62,7 @@ def it_self_update():
else:
print("\nNew version '{0}-{1}' is available !\n".format(
__all__, __new_version__))
answer = raw_input("Would you like to continue [Y/n]? ")
answer = raw_input("Would you like to upgrade [Y/n]? ")
if answer in ['y', 'Y']:
print("") # new line after answer
else:
@ -70,11 +72,14 @@ def it_self_update():
__new_version__)]
Download(build_path, dwn_link).start()
os.chdir(build_path)
tar = tarfile.open('v' + __new_version__ + '.tar.gz')
slpkg_tar_file = 'v' + __new_version__ + '.tar.gz'
tar = tarfile.open(slpkg_tar_file)
tar.extractall()
tar.close()
file_name = '{0}-{1}'.format(__all__, __new_version__)
os.chdir(file_name)
check_md5(pkg_checksum(slpkg_tar_file, "slpkg"),
build_path + slpkg_tar_file)
subprocess.call('chmod +x {0}'.format(file_name), shell=True)
subprocess.call('sh install.sh', shell=True)
else:

View file

@ -24,6 +24,8 @@
import sys
import urllib2
from __metadata__ import color
class URL(object):
@ -38,8 +40,9 @@ class URL(object):
f = urllib2.urlopen(self.link)
return f.read()
except (urllib2.URLError, ValueError):
print("\nslpkg: error: connection refused\n")
sys.exit(0)
print("\n{0}Can't read file '{1}'{2}".format(
color['RED'], self.link.split('/')[-1], color['ENDC']))
return ' '
except KeyboardInterrupt:
print("") # new line at exit
sys.exit(0)