summaryrefslogtreecommitdiff
path: root/source/ap/slackpkg
diff options
context:
space:
mode:
authorPatrick J Volkerding <volkerdi@slackware.com>2016-06-30 20:26:57 +0000
committerEric Hameleers <alien@slackware.com>2018-05-31 23:31:18 +0200
commitd31c50870d0bee042ce660e445c9294a59a3a65b (patch)
tree6bfc0de3c95267b401b620c2c67859557dc60f97 /source/ap/slackpkg
parent76fc4757ac91ac7947a01fb7b53dddf9a78a01d1 (diff)
downloadcurrent-d31c50870d0bee042ce660e445c9294a59a3a65b.tar.gz
Slackware 14.2slackware-14.2
Thu Jun 30 20:26:57 UTC 2016 Slackware 14.2 x86_64 stable is released! The long development cycle (the Linux community has lately been living in "interesting times", as they say) is finally behind us, and we're proud to announce the release of Slackware 14.2. The new release brings many updates and modern tools, has switched from udev to eudev (no systemd), and adds well over a hundred new packages to the system. Thanks to the team, the upstream developers, the dedicated Slackware community, and everyone else who pitched in to help make this release a reality. The ISOs are off to be replicated, a 6 CD-ROM 32-bit set and a dual-sided 32-bit/64-bit x86/x86_64 DVD. Please consider supporting the Slackware project by picking up a copy from store.slackware.com. We're taking pre-orders now, and offer a discount if you sign up for a subscription. Have fun! :-)
Diffstat (limited to 'source/ap/slackpkg')
-rw-r--r--source/ap/slackpkg/README4
-rw-r--r--source/ap/slackpkg/doinst.sh40
-rw-r--r--source/ap/slackpkg/files/ChangeLog1510
-rw-r--r--source/ap/slackpkg/files/GPL340
-rw-r--r--source/ap/slackpkg/files/README70
-rw-r--r--source/ap/slackpkg/files/blacklist.new38
-rw-r--r--source/ap/slackpkg/files/core-functions.sh1351
-rw-r--r--source/ap/slackpkg/files/cutpkg.awk8
-rw-r--r--source/ap/slackpkg/files/dialog-functions.sh75
-rw-r--r--source/ap/slackpkg/files/filelist.awk28
-rw-r--r--source/ap/slackpkg/files/install-new.awk45
-rw-r--r--source/ap/slackpkg/files/mirrors-arm.sample99
-rw-r--r--source/ap/slackpkg/files/mirrors-s390.sample43
-rw-r--r--source/ap/slackpkg/files/mirrors-x86.sample441
-rw-r--r--source/ap/slackpkg/files/mirrors-x86_64.sample427
-rw-r--r--source/ap/slackpkg/files/pkglist.awk35
-rw-r--r--source/ap/slackpkg/files/post-functions.sh221
-rw-r--r--source/ap/slackpkg/files/slackpkg574
-rw-r--r--source/ap/slackpkg/files/slackpkg.8337
-rw-r--r--source/ap/slackpkg/files/slackpkg.conf.5338
-rw-r--r--source/ap/slackpkg/files/slackpkg.conf.new153
-rw-r--r--source/ap/slackpkg/slack-desc19
-rwxr-xr-xsource/ap/slackpkg/slackpkg.SlackBuild119
23 files changed, 6311 insertions, 4 deletions
diff --git a/source/ap/slackpkg/README b/source/ap/slackpkg/README
deleted file mode 100644
index 985b0ca8..00000000
--- a/source/ap/slackpkg/README
+++ /dev/null
@@ -1,4 +0,0 @@
-NOTE:
-
-"slackpkg" is a shell script, so there is no source package.
-
diff --git a/source/ap/slackpkg/doinst.sh b/source/ap/slackpkg/doinst.sh
new file mode 100644
index 00000000..e04d744b
--- /dev/null
+++ b/source/ap/slackpkg/doinst.sh
@@ -0,0 +1,40 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+copy_mirror_file() {
+ ARCH=$(uname -m)
+ case $ARCH in
+ i386|i486|i586|i686)
+ SRCMIRROR=mirrors-x86.sample
+ ;;
+ x86-64|x86_64|X86-64|X86_64)
+ SRCMIRROR=mirrors-x86_64.sample
+ ;;
+ s390)
+ SRCMIRROR=mirrors-s390.sample
+ ;;
+ arm*)
+ SRCMIRROR=mirrors-arm.sample
+ ;;
+ *)
+ SRCMIRROR=mirrors-x86.sample
+ ;;
+ esac
+ cp usr/doc/slackpkg-@VERSION@/$SRCMIRROR etc/slackpkg/mirrors.new
+}
+
+copy_mirror_file
+config etc/slackpkg/mirrors.new
+config etc/slackpkg/slackpkg.conf.new
+config etc/slackpkg/blacklist.new
+rm -f var/lib/slackpkg/ChangeLog.txt
+rm -f var/lib/slackpkg/pkglist
diff --git a/source/ap/slackpkg/files/ChangeLog b/source/ap/slackpkg/files/ChangeLog
new file mode 100644
index 00000000..0189e798
--- /dev/null
+++ b/source/ap/slackpkg/files/ChangeLog
@@ -0,0 +1,1510 @@
+Wed May 11 04:23:52 UTC 2016
+Updated mirrors-x86*.sample for Slackware 14.2.
+Released as 2.82.1-1 (yet another unauthorized volkerdi release)
++--------------------------+
+
+2014 Thu Jul 10
+---------------
+ - Patched to respect the $ROOT environment variable to point to the
+ location to update (like installpkg does), and also to use the
+ $CONF environment variable to point to the slackpkg config file.
+ Thanks to Matteo Bernardini.
+ - Released as 2.82.0-13 (yet another unauthorized volkerdi release)
+
+2013 Sun Oct 20
+---------------
+ - Corrected some typos in the slackpkg man page.
+ Thanks to sycamorex.
+ - Released as 2.82.0-12 (yet another unauthorized volkerdi release)
+
+2013 Fri Oct 11
+---------------
+ - Verified and corrected the mirrors lists for x86 and x86_64.
+ - Changed version numbers from 14.0 to 14.1 in preparation for
+ the upcoming Slackware 14.1 release.
+ - Corrected a manpage bug in the file-search section.
+ - Released as 2.82.0-11 (yet another unauthorized volkerdi release)
+
+2013 Tue Sep 17
+---------------
+ - Patched core-functions.sh to fix searching for qt, phonon,
+ and other packages in cases where package names overlap.
+ Thanks to Sébastien Ballet.
+ - Released as 2.82.0-10 (yet another unauthorized volkerdi release)
+
+2013 Wed May 22
+---------------
+ - Set DOWNLOAD_ALL=on by default. This avoids issues where
+ components that are needed by slackpkg requires library
+ updates in a different package. Without downloading all
+ packages first failures are all too common.
+ - Released as 2.82.0-9 (yet another unauthorized volkerdi release)
+
+2012 Thu Aug 30
+---------------
+ - Merged a few fixes to the mirror lists for x86 and x86_64.
+ Thanks to Jordan Clarke for the help!
+ - Released as 2.82.0-8 (yet another unauthorized volkerdi release)
+
+2012 Fri Aug 24
+---------------
+ - Updated mirrors for Slackware 14.0 release.
+ Thanks to Jordan Clarke for the help!
+ - Released as 2.82.0-7 (yet another unauthorized volkerdi release)
+
+2012 Sun Jul 22
+---------------
+ - Added support for the XFCE series
+ - Released as 2.82.0-6 (Clandestine release by volkerdi ;-)
+
+2011 Tue Apr 05
+---------------
+ - Fixed regex bugs (packages with 'asc' in the name ignored by
+ clean-system). (Thanks David Somero)
+ - Released as 2.82.0-5
+
+2011 Wed Mar 30
+---------------
+ - Updated mirrors for Indonesia and Servia
+ (Thanks Willy Sudiarto and Branko Grubic)
+ - Better explanation about regex blacklisting in blacklist sample
+ file. (Thanks crocket and rworkman)
+ - Last ChangeLog date fixed, was Mar 23 and the correct is Mar 24
+ - Released as 2.82.0-4
+
+2011 Thu Mar 24
+---------------
+ - Fixed ARCH string for ARMedslack.
+ (report and fix by Niels Horn)
+ - Updated mirrors file to include slackware 13.37 mirrors
+ (thanks volkerdi)
+ - Updated blacklist sample file to include new usage examples
+ - Released as 2.82.0
+
+2011 Thu Feb 17
+---------------
+ - Fixed problem in "search" function:
+ If the package name string matches the end of a previous
+ package name it will not be in the "search" package list
+ (reported by David Lee)
+ - Removed old checkblacklist function and all references to it
+
+2010 Sun Dec 05
+---------------
+ - Some fixes in blacklist new function. The old one have problems
+ when making the install list (all blacklisted packages appears
+ as installables).
+
+2010 Fri Sep 10
+---------------
+ - Change in blacklist function. Using a fresh new one.
+ Now blacklist is applied in package lists and not package-by-package.
+ This speeds package list generation and allow the use of regexp
+ on blacklist file.
+
+2010 Thu May 13
+---------------
+ - Include 2010 on Copyright notices
+ - Added slackware 13.1 on mirrors file (x86, x86_64 and arm)
+ - Released as 2.81.1
+
+2010 Sat May 01
+---------------
+ - Use $TMPDIR/pkglist instead $WORKDIR/tmplist on many places.
+ This avoids problems when slackpkg does self-upgrade.
+ - Change CHECKSIZE default to "off"
+ - Fix CHECKSIZE to only check mountpoints. This avoids problems when
+ the system have networked or DVD/CDs mounted
+ (Thanks alienbob and vbatts)
+ - Change version number to 2.81.1
+ - Released as 2.81.1beta1. Happy Workers Day!
+
+2010 Wed Apr 28
+---------------
+ - Fix blacklist checking on 'slackpkg clean-system'. It was
+ checking if the package is blacklisted but didn't use this
+ information.
+ (Reported by Greg and Shuren)
+ - Change 2.81 release date on ChangeLog and README to 2010 *Fri*
+ Apr 23, not 2010 *Thu* Apr 23.
+ (Thanks gui_ap)
+
+2010 Fri Apr 23
+---------------
+ - Fixed some typos in 'slackpkg help'
+ - Fixed 'update gpg' to use the unified getfile function
+ - Released as 2.81
+
+2010 Tue Apr 20
+---------------
+ - Unified download code. Function getfile is the only place
+ with download instructions and getpkg uses it.
+ - Added DOWNLOADER variable. You can choose between "curl" and "wget"
+ downloaders.
+
+2010 Mon Apr 19
+---------------
+ - Now we can, before install or upgrade a package, verify
+ if the system have enough available space in its filesystems.
+ This can slowdown the upgrade/install process but can save a lot
+ of problems.
+ . Added CHECKSIZE on slackpkg.conf
+ . Added CHECKSIZE on slackpkg.conf manpage
+ . Added -checksize on usr/sbin/slackpkg
+ . Added havespace and checksize functions on core-functions.sh
+ - Released as slackpkg-2.81beta2
+
+2010 Sun Apr 18
+---------------
+ - Added DIALOG_MAXARGS variable. This is to set the max number of
+ characters that dialog can handle. If DIALOG_MAXARGS is unset we
+ use the traditional 19500 characters. Removing hints when
+ we reach DIALOG_MAXARGS *ISN'T A BUG* is a *FIX*. Without that,
+ upgrade from slackware-X to slackware-X+1 will be impossible.
+ . Added DIALOG_MAXARGS on slackpkg.conf
+ . Added DIALOG_MAXARGS on slackpkg.conf manpage
+ . Added -dialog_maxargs on usr/sbin/slackpkg
+
+2010 Tue Feb 16
+---------------
+ - Fix x86 32bits regexp to not catch x86_64 packages
+ - Applied more patches from Grissiom:
+ . uniq in listpkgname function
+ . tell the user the ignored arguments
+ . respect only .sh functions on functions.d
+ - Split mirrors file by architecture. doinst.sh copy the
+ right file to right place.
+ - Change references to <piterpk@terra.com.br> to
+ <piterpunk@slackware.com>
+
+2009 Sat Dec 12
+---------------
+ - Fix link problem with non-existent files
+ - Fix pkglist.awk to be compatible with new awk
+ (reported by rworkman)
+ - Now users can run "help" function
+ - Update man-pages with file-search, help and search
+ - Applied a lot of patches from Grissiom:
+ . Change mktemp creation test to be more "standard"
+ . Use parameter expansion instead "echo STRING | cut" in
+ some places
+ . Use MORECMD to show blacklist if needed
+ . Change all `command` to $(command)
+ . Check if lilo is installed before trying to run it
+ . Some minor formating changes
+ - Other minor formating changes
+ - Update version on many places to 2.81
+
+2009 Tue Nov 24
+---------------
+ - Move search code from /sbin/slackpkg to core-functions.sh
+ - Use spinning bar on search and file-search
+ - Move existing "search" function to "file-search" and create a
+ new "search", that looks for package's name
+ - Update usage and full_usage to reflect "search" and "file-search"
+ changes
+ - Update a lot of system checks to take care of file-search.
+
+2009 Mon Nov 23
+---------------
+ - Add listpkgname function to create spkg, lpkg and dpkg files
+ - Change upgrade-all to use listpkgname function
+ - Enhance clean-system performance using listpkgname function
+ to list packages
+ - Put comments on some functions to be more useful
+ - Change usage function to show only the slackpkg's syntax
+ Old usage is now "slackpkg help", with a short description
+ of each slackpkg command.
+
+2009 Sun Nov 22
+---------------
+ - Applied patch to link local files instead copying
+ The old way was really stupid, why copy a file that
+ already is there?
+ (Thanks Grissiom)
+ - Changed the way that slackpkg make the upgrade-all list
+ Now the list is created very faster than before
+ (Thanks Grissiom)
+ - Added spinning bar to sanity-check function
+ Good to give some feedback to user
+ - Move awk code from cutpkg function to cutpkg.awk
+ Now we have cutpkg function, to handle a single package name
+ and batchcutpkg to read many package names from stdin
+ This speed sanity-check function
+ - Deactivate spinning bar when tput command is not found
+ - Force cursor back to normal mode in cleanup function
+ (Thanks NaCl)
+
+2009 Thu Jul 30
+---------------
+ - Change version number in manpages
+ - Released as 2.80.2
+
+2009 Mon Jul 27
+---------------
+ - Bumped version number to 2.80.2
+
+2009 Sun Jul 26
+---------------
+ - Changed [[:digit:]] references to [^-] in usr/sbin/slackpkg
+ that makes some packages don't be found by slackpkg.
+ (Thanks Niels Horn and Grissiom)
+ - Removing leading spaces or tabs in mirrors file.
+ (Thanks Luke, Max, Cezar Rangel and
+ other guys on slack-users-br list)
+ - Fix slackpkg.conf comments about BATCH mode.
+ (Thanks Bruce Hill and AlienBob)
+ - Fix Indonesian mirrors.
+ (Thanks Willy Sudiarto Raharjo)
+ - Fix some Polish mirrors.
+ (Thanks Dexen deVries)
+ - Fix some UK mirrors.
+ (Thanks Andrew Fielder)
+
+2009 Tue Jul 14
+---------------
+ - Added ARMedslack mirrors
+ (Thanks MoZes)
+ - Fix in generate-template to honor USE_INCLUDES option
+ - Released as 2.80.1
+
+2009 Wed Jul 08
+---------------
+ - Updated the Slackpkg's mirrors file.
+ (Thanks DagMoller)
+
+2009 Thu Jun 18
+---------------
+ - Merged some patches from Daniel Levai to enhance the config
+ merge options.
+ - Released as 2.80
+
+2009 Thu Jun 11
+---------------
+ - Fixed a circular check: new-config needs update and update
+ needs new-config.
+
+2009 Sun Jun 07
+---------------
+ - Change in doinst.sh to remove old pkglist at slackpkg's
+ install. (Thanks Klein)
+ - Change in slackpkg to use most of time ${TMPDIR}/pkglist instead
+ ${WORKDIR}/pkglist.
+ - Released as 2.80beta3
+
+2009 Wed Jun 03
+---------------
+ - Change "tput cub1" to "tput sc" and "tput rc". This give back to
+ us the option of multi-character "spinning bars".
+ - Create function showmenu to handle aligned options in post-functions.sh
+ - Released as 2.80beta2
+
+2009 Mon Jun 01
+---------------
+ - Use cub1 instead "cub N" in spinning bar. cub1 is
+ supported by "linux" terminal.
+ (Thanks KynDer)
+ - Honors $PAGER variable if set.
+ (Thanks Daniel Levai)
+ - Added interactive merge option to post-functions.sh this makes
+ very easier to manage .new files.
+ (Thanks Daniel Levai)
+ - Changes on post-functions.sh to show aligned options in "(P)rompt"
+ and "(M)erge" functions.
+
+2009 Fri May 29
+---------------
+ - Eliminate ARCH test when new-config is called
+ - Use $PRIORITY in search command
+ (Thanks Supergrilo)
+
+2009 Thu May 28
+---------------
+ - Released as 2.80beta1
+
+2009 Thu May 21
+---------------
+ - Fix usage message formatting
+ - new-config can run with outdated slackpkg.conf. With that
+ you can use new-config to update the slackpkg.conf -;)
+
+2009 Tue May 19
+---------------
+ - Released Slackware64! Congratulations to everyone in
+ Slackware Team!
+ - Fix a problem with rpm2tgz package (again?!?!?)
+ Thanks Niels Horn
+ - Added Slackware key configuration to x86_64 architecture
+ - Added remove-template, install-template and generate-template
+ to usage function
+
+2009 Mon May 04
+---------------
+ - Fixed .new detection. (Thanks Stuart Winter)
+ - Renamed the "CHECKPKG" variable to "CHECKMD5" (and changed the
+ relevant command line options; this is more appropriate for what
+ the function does (it checks md5 sums of the packages), and it's
+ easier to tell the difference between it and CHECKGPG at a glance.
+ (Thanks Robby Workman)
+ - Added check to see if slackpkg.conf version matches slackpkg
+ version.
+ - More changes in install-new's ChangeLog.txt parsing
+
+2009 Sun May 03
+---------------
+ - Added generate-template, remove-template, and install-template
+ commands. The first one creates a template with all official
+ slackware packages installed in the machine. The template is saved
+ in /etc/slackpkg/templates. You can copy this template to other
+ machines and install it with install-template.
+ - Added a spinning bar to give visual feedback of slackpkg "thinking".
+ - SPINNING is added to slackpkg.conf. It can enable (on) and
+ disable (off) the spinning bar.
+ - Added USE_INCLUDES to manage whether template includes should be
+ processed by slackpkg.
+ - ARCH now needs to be in the same format of "uname -m".
+ slackpkg can change it automagically. If you need to override what
+ slackpkg detects, set the variable in slackpkg.conf.
+ - MAIN is now handled internally by slackpkg. You can no longer change
+ this variable using slackpkg.conf.
+ - PKGMAIN is set by slackpkg to the appropriate value for your
+ ARCH port.
+ - SLACKKEY now can be set in slackpkg.conf. Usually slackpkg will
+ handle this automagically.
+ - FIRST, SECOND, THIRD, FOURTH, and FIFTH are replaced by a single
+ array: PRIORITY. The contents of those five variables now are
+ inside PRIORITY array.
+ - Added support to Slackintosh with the inclusion of "mac" series.
+ - Some changes in install-new's ChangeLog.txt parsing
+ - slackpkg.conf bumped to version 2.8
+ - updated slackpkg and slackpkg.conf manpages
+
+2009 Sat May 02
+---------------
+ - Released as slackpkg 2.71.1
+
+2009 Sat Apr 25
+---------------
+ - Fixed parsing of .t[blxg]z extension in packages
+ with tgz, tlz, tbz or txz inside file name.
+ (Thanks Erik Jan Tromp)
+
+2009 Thu Apr 23
+---------------
+ - Released 2.71!
+
+2009 Sat Apr 18
+---------------
+ - Removing source files in md5 package search
+ (Thanks Alan Hicks)
+ - Fixed problem in search function and packages with
+ letters, _ or . in RELEASE field.
+ (Thanks mrgobling)
+ - Released as 2.71beta5 (i think last one)
+
+2009 Wed Apr 15
+---------------
+ - Fix problem in checking md5 of some packages
+ - Fix pkglist.awk script. The changes to support
+ tbz, tlz and txz brokes the local package list.
+ - 2.71beta4!! Man, we don't stop!
+
+2009 Fri Apr 10
+---------------
+ - Now use CHECKSUMS.md5 as primary source of package
+ names.
+ - Check if FILELIST.TXT is newer than last update.
+ That will prevents you to accidentaly downgrade
+ your machine using an outdated mirror.
+ - Added a lot of new security checks
+ - check CHECKSUMS.md5 against CHECKSUMS.md5.asc
+ - check FILELIST.TXT against CHECKSUMS.md5
+ - check all downloaded .asc against CHECKSUMS.md5
+ (CHECKSUMS.md5.asc is excluded of this check)
+
+2009 Tue Apr 07
+---------------
+ - Added support to other package extensions.
+ Now slackpkg can handle tgz, tbz, tlz and txz.
+ Of course, this depends on pkgtools with the
+ same capabilities.
+
+2009 Mon Mar 23
+---------------
+ - Put findutils to be upgraded before glibc-solibs.
+ I think this is wrong. But for some strange reason
+ findutils brokes if glibc is upgraded first.
+ - Packaged and relased as 2.71beta3 (hope last)
+
+2009 Wed Mar 18
+---------------
+ - Non root users can use "check-updates" command in slackpkg
+ - Show to user if using FILELIST.TXT or CHECKSUMS.md5 as package
+ lista source.
+ - Added ONLY_NEW_DOTNEW variable to slackpkg configuration file
+ (and -only_new_dotnew to command line). With that, only the
+ latest .new files will be checked by post-install function.
+ - Added ONLY_NEW_DOTNEW and PKGMAIN description on slackpkg.conf
+ man-page.
+ - Added "check-updates" on slackpkg man-page.
+ - Random fixes in both man-pages.
+ - Fix "check-updates" to be used without Slackware Project GPG
+ Key imported. (thanks guax)
+
+2009 Sat Mar 14
+---------------
+ - Change update and getpkg functions to create a slackware
+ tree inside /var/cache/packages.
+
+2009 Fri Mar 06
+---------------
+ - If FILELIST.TXT isn't found, use CHECKSUMS.md5 to the
+ same thing
+ - Fix some problems in parsing MANIFEST.bz2 files
+ - Release as first 2.71beta1
+
+2008 Mon Dec 22
+---------------
+ - Include check-updates option
+ - Fix problem with MORE env variable. Now slackpkg uses
+ MORECMD internally
+
+2008 Thu Dec 04
+---------------
+ - Change version in man-pages (ok, put the version in man-pages
+ probably was the most stupid idea that i had).
+ - Released 2.70.5
+
+2008 Mon Dec 01
+---------------
+ - Update mirrors file for Slackware 12.2 (Thanks rworkman!)
+ - Change version to 2.70.5 (Thanks rworkman!)
+
+2008 Tue Nov 25
+---------------
+ - Fix install-new.awk file to catch the return of
+ bluez-libs and bluez-utils
+
+2008 Fri Nov 21
+---------------
+ - We are in Slackware main-tree!!! Big Thanks Patrick!
+ Big thanks to all our users!
+
+2008 Fri May 02
+---------------
+ - Fix regexp in slackpkg.conf to x86 arch. It was missing
+ kernel-headers package
+ - Released 2.70.4
+
+2008 Wed Apr 30
+---------------
+ - Fix regexps to catch "fw" packages
+ - Released 2.70.3
+
+2008 Tue Apr 08
+---------------
+ - Added xbacklight, ntfs-3g, wqy-zenhei-font-ttf,
+ xf86-video-geode and ghostscript packages to install-new
+ list.
+ - Released 2.70.2
+
+2008 Sat Mar 15
+---------------
+ - Released 2.70.1
+
+2008 Fri Mar 14
+---------------
+ - Compressed man-pages
+ - Fix problem with somo proxys adding ^M at FILELIST.TXT
+
+2008 Tue Jan 29
+---------------
+ - Released slackpkg 2.70
+ - Happy Birthday Marina!
+
+2008 Mon Jan 28
+---------------
+ - Fix problem with duplicated packages in package list
+ (reported by gar0t0)
+ - Fixed pattern matching problems with g++ and other packages
+ with special characters. (reported by gar0t0)
+
+2008 Tue Jan 22
+---------------
+ - Better error handling in update from wrong mirrors
+ (problem reported by redhate)
+
+2008 Mon Jan 21
+---------------
+ - Fixed install-new ChangeLog parsing problem.
+ Some packages are missing from install-new list.
+
+2008 Sat Jan 19
+---------------
+ - Not released. Bugs everywhere
+ - slackpkg info doesn't work (info was using deprecated
+ PATTERN variable) (reported by redhate)
+ - slackpkg update corrupts file lists and package
+ information. Now all the files are first in TMPDIR
+ before goes to WORKDIR. (reported by redhate)
+ - slackpkg download isn't in new command line parser.
+ (reported by redhate)
+ - Fix all commands to doesn't work without a configured
+ mirror
+ - Fixed some format errors in "usage"
+
+2008 Fri Jan 18
+---------------
+ - Fixed an error when checking GPG key. This is caused
+ by the "backticks" enhancement, reported by many and
+ fixed by rworkman, many thanks!
+ - No more bug reports in a week, time to release
+
+2008 Wed Jan 10
+---------------
+ - Updated "mirrors" file
+ - Fixed stall on "search" (reported by The-spiki)
+ - Fixed misbehavior of "update gpg" (The-spiki, again. Thanks!)
+ - Added local:// as the same of file:// and cdrom://
+ in mirrors definitions. (thanks rworkman!)
+ - Removed backticks `commmand` and using now $(command)
+ (thanks rworkman!)
+ - Fixed many en_BR bugs in docs and configuration files
+ (thanks again rworkman!)
+
+2008 Wed Jan 09
+---------------
+ - A new command line parser, much better than the older one.
+ Now you can override slackpkg.conf configurations from
+ command line:
+
+ slackpkg -checkpkg=off upgrade-all
+
+ Will disable the checkpkg feature. Many slackpkg.conf
+ can be overrided using that. You can also specify a
+ different mirror, using -mirror=URL/
+ - Additional check to see if "which" is there
+ - Added "new-config" option, it will search for .new files
+ and ask to user what to do with them. (suggested by X-Gizmo)
+
+2008 Wed Jan 07
+---------------
+ - Added BATCH and DEFAULT_ANSWER options in slackpkg.conf,
+ you can use those two to make automated upgrades without
+ human intervention. (suggested by Clayton and many others).
+
+2008 Wed Jan 04
+---------------
+ - Fixes in install-new.awk to catch more new packages
+
+2007 Sat Jun 09
+---------------
+ - Removed "httpd" from the hardcoded list. It isn't needed.
+ - Released the 2.61
+
+2007 Tue Jun 05
+---------------
+ - Fixes in almost all slackpkg messages and in README file
+ (Thanks Robby Workman!)
+ - Included (I) to ignore duplicated files... well, this can
+ burn your computer... but who am I to don't let you do that?
+ (Thanks Robby Workman, again)
+ - Included httpd in hardcoded install-new files.
+ - Bumped the version number to 2.61
+
+2007 Sun May 27
+---------------
+ - Back to the xargs combo in dialog-functions. --file doesn't
+ works in slackware 10.1.
+ - Fix some bugs in file list generation. Some declarations
+ like:
+ local VAR=`something`
+ doens't works well in older bash (in 10.1). This bug
+ generates a lot of "dialog" bugs. I hope they are fixed
+ now.
+ - Better error handling in dialog-functions. Now we can
+ detect when dialog fails and print one error message.
+
+2007 Tue May 15
+---------------
+ - Added one / before ${NAMEPKG} in check md5sum. It prevents
+ a match with vim and vim-gvim (and possible other packages)
+ and subsequent m5sum errors.
+ (Reported by Diniz Bortolotto)
+ - Swap some "ls" uses by -e to check if one file exists
+ - Changed the way of error treatment. Now we have:
+ . One log of what package gives error
+ . What error happens in each package
+ . Not install one package if the GPG signature
+ is OK but md5sum isn't (maybe a corrupted
+ package?)
+ . Shows all logged errors when slackpkg
+ ends.
+
+2007 Tue May 08
+---------------
+ - Correct the release date of 2.52
+ - Change version number to 2.60 instead 2.60beta
+ - Added one tip in slackpkg's man page telling about
+ slackpkg upgrade slackware
+ - Released slackpkg 2.60!!
+
+2007 Wed May 02
+---------------
+ - Added fontconfig in the hardcoded install-new packages
+ - Make install-new to search only in the main slackware
+ series. No more /extra and /pasture packages
+ - Changes in dialog functions. To prevent some strange
+ errors we use grep -m1 to use only the first match
+ and --file in dialog to prevent bizarre xargs
+ errors (reported by many)
+ - Fixes in sanity-check function to discover
+ duplicated packages. (Thanks Sasha Alexandr)
+
+2007 Sat Mar 17
+---------------
+ - Change VERSION to 2.52 instead 2.52beta
+ - Added a test do detect old slackpkg.conf versions
+ - Added hardcoded dialog and aaa_terminfo in install-new
+ - Released slackpkg 2.52!!
+
+2007 Mon Mar 12
+---------------
+ - Changing NOGPG to CHECKGPG. Is more coherent with the other
+ options. Thanks Robby to point that.
+ - Many update and grammar fixes in documentation.
+ (Thanks again Robby Workman!)
+
+2007 Mon Jan 05
+---------------
+ - Fix many errors in "install-new". It didn't found any
+ package with [A-Z] or [0-9] in his names.
+ - Still in "install-new", now we can detect more new packages,
+ the awk script is a lot better now.
+ - Correct the .tgz parsing in pkglist.awk, using \.tgz instead.
+ - Newer (and i hope, good) man-pages.
+
+2006 Wed Nov 08
+---------------
+ - Fixed the "upgrade" package parsing. It was going wrong
+ with nn and glib packages.
+ (Reported by Ralph Alvy)
+ - Fixed "reinstall" it was ignoring the blacklist and given
+ wrong packages to reinstall.
+ - Now blacklist can handle directories beginning with a / and not
+ with ./ (very better, and this is the needed behavior).
+ - Accept the list of packages from a file
+ (e.g.: slackpkg upgrade /etc/slackpkg/files)
+ We accept relative (./something, ../something) and absolute
+ paths (/something).
+ - Release 2.51beta
+
+2006 Sun Oct 29
+---------------
+ - Fixes to install/upgrade (it was broked when i change the
+ tmplist). Now it's OK
+ - Fixes in remove and reinstall, they are showing duplicated
+ entries in the list. Now it's OK
+ - Fix in download... it was total crazy! Now it's OK
+ - Added install-new.awk and improve the ChangeLog.txt parser
+ now we don't have any package hardcoded.
+ - Fix in upgrade-all to remove the unused variable NAME now we can use
+ the data in pkglist.
+ - Minor fix in clean-system.
+ - Change the variable's scope to "local" in many functions
+
+2006 Sat Oct 28
+---------------
+ - Change the tmplist format to be the same as pkglist
+ - New functions to make the package list with that we now can:
+ - Handle multiple files in the command line.
+ (e.g.: slackpkg upgrade kernel x11 lsof)
+ - Use the package series as the pattern, without the
+ trailing / hack.
+ (e.g.: slackpkg remove a)
+ - "download" don't use the blacklist. The user now can
+ download one blacklisted package.
+ - Release slackpkg 2.5beta
+
+2006 Fri Oct 27
+---------------
+ - A lot of job rebuilding (again) the package parser. This
+ is the logic that search for apropriate packages and see if
+ that packages are or not in blacklist. This is the harder
+ piece of slackpkg development. For now we made:
+ . a new pkglist.awk that creates a really new and
+ more featureful pkglist. The new slackpkg can't work
+ anymore with the old pkglist.
+ . One blacklist function that can match:
+ . directories
+ . package-names
+ . package-names with version
+ . package-names with version and arch
+ . package-names with version, arch and release.
+ . This fix a problem with some packages being override
+ by others with "similar" names.
+ (e.g.: k3b being override by k3b-i18n)
+
+2006 Thu Oct 26
+---------------
+ - Create the WORKDIR variable and put all package and file lists
+ there. Now ppl that wants to mount / read-only can do that.
+ (Thanks to Trevor Caira)
+ - Added a little bit of sanity in slackpkg.conf. Now all options
+ uses "on" to be activated and "off" to be deactivated. No more
+ "1", "0", "On", "ON" and all the chaos that we had before.
+ (Thanks to Robby Workman)
+ - Added one FIFTH directory. Now people can use /testing as a
+ repository, too (of course this will break a lot of things)
+ - Added one MAIN variable. This is used instead slackware to
+ identify the main distro directory.
+ - Move /etc/slackpkg/filelist.awk to /usr/libexec/slackpkg. This
+ is the correct place to a executable.
+
+2006 Mon Aug 28
+---------------
+ - Fixed a problem with upgrade-all when try to upgrade directly
+ from 10.2 to 11rc3. xargs can only handle 20k lines.
+ - Changed version to 2.09
+ - Released 2.09
+
+2006 Sat Aug 26
+---------------
+ - Fixed a typo in ChangeLog.txt message
+ (Thanks Cameron Willians)
+ - Fixed two problems in install-new:
+ bug0: install-new duplicates packages
+ bug1: install-new doesn't catch lm_sensors package we wasn't
+ ready to handle packages with a _.
+
+2006 Wed Aug 23
+---------------
+ - Fixes in blacklist.new, nothing more.
+ - Released a repackaged 2.08-3
+
+2006 Fri Aug 18
+---------------
+ - Fixed typos in manpages
+ - Changed version to slackpkg 2.08
+ - Released 2.08
+
+2006 Thu Aug 17
+---------------
+ - Revert the "typo fix" and now "Formating" is "Formatting" again.
+ - A little fix in install-new to better handler the newer packages
+ - Big fixes in new priority check
+
+2006 Mon Aug 14
+---------------
+ - Released 2.07
+
+2006 Sun Aug 13
+---------------
+ - Added another test to solve problems with "install-new"
+ and no ARCH match.
+ (Thanks to Ralph Alvy)
+ - Removed some debug messages
+
+2006 Fri Aug 11
+---------------
+ - Solves the problem with -upgraded-$TIMESTAMP
+ packages in /var/log/packages.
+ (Thanks to Ralph Alvy and Ing Nicolo Chiellini)
+ - Added l/mm in install-new
+
+2006 Wed Aug 09
+---------------
+ - Change in search function, now it uses the priority to
+ sort packages.
+ - Some fix in changes from yesterday and move the blacklist
+ and check to a separate function.
+ - Non-root users now can see the slackpkg help
+ (Thanks to Thomas)
+ - Changed slackpkg's doinst.sh to use the config function from
+ doinst.sh from other packages
+ (Thanks Ernani (idea) and Patrick (the function itself))
+ - Put the ChangeLog in reverse order. Is very easier to see the
+ news now.
+ - Changed the version number to 2.07
+
+2006 Tue Aug 08
+---------------
+ - Changed the function that give priority and check the
+ blacklist in install, upgrade, reinstall, download and
+ upgrade-all
+ - Blacklist now supports blacklist entire directories.
+
+2006 Wed Aug 02
+---------------
+ - Fixed a typo in "Formatting". Now is "Formating" -;)
+ (Thanx Devin J. Pohly)
+
+2006 Fri Jul 28
+---------------
+ - Added xfsdump (hardcoded) in install-new
+ - Change the list generation in install-new to handle Renamed
+ and Split files.
+ - Change copyright notices to include 2006
+ - Released slackpkg 2.06
+
+2006 Thu Jun 08
+---------------
+ - Added acl, attr and dmapi (hardcoded) in install-new
+ - Changed the list generation in sanity_check. We had problems
+ with non-standard package names.
+ (Thanx Rolando Roman)
+ - Released slackpkg 2.05
+
+2006 Tue Jun 06
+---------------
+ - A better message in sanity_check
+ - Fixes in the grepping of packages in sanity_check function
+ (Thanx Rolando Roman)
+ - Changed version to 2.05
+
+2006 Thu Jun 01
+---------------
+ - More modularized functions. Now upgrade and upgrade-all, remove and
+ clean-system, install and install-new shares the same code
+ - makelist now work for all commands
+ - Some sanity_checks, to saw if the machine have some doubled packages
+
+2006 Thu May 25
+---------------
+ - Create a manpage for slackpkg.conf (probably full of typos)
+ - Changed versions to 2.04
+
+2006 Wed May 24
+---------------
+ - Fix some problems in install-new. If the package are ugraded before
+ added in slackware, the install-new only finds the old package.
+
+2006 Sat May 20
+---------------
+ - Put -- in many "grep" to prevent using grep options as a
+ package pattern.
+ - Added DOWNLOAD_ALL in slackpkg.conf, with that you can download
+ all packages and after that install/upgrade all.
+
+2006 Thu May 18
+---------------
+ - Fix a mistype in install-new
+ - Put dialog functions disabled by default. If you want, you can
+ try it using: chmod +x /usr/libexec/slackpkg/functions.d/dialog*
+ - Fix permissions to root.root
+ - Released version 2.03
+
+2006 Mon May 16
+---------------
+ - Fix errors in install-new list.
+ (Reported by rick276 and gar0t0, thanx!)
+ - Put one version warning in dialog functions
+ (Thanx coqui)
+ - Included install-new on the man-page and in README
+
+2006 Fri May 12
+---------------
+ - Added install-new, it searches for packages added in slackware
+ distribution and install them.
+
+2006 Thu May 11
+---------------
+ - Upgrade the mirrors list to include slackware 11.0. Well,
+ it is in pre-order, probably we need to upgrade soon
+ - More two patches from Marek
+ - One to show the diff between "something" and "something.new".
+ This make the life more easier
+ - Another to include dialog lists when you need to choose packages.
+ If you want to disable this feature, you can remove the
+ executable permission from:
+ /usr/libexec/slackpkg/functions.d/dialog-functions.sh
+ - Set the PATH in the beginning of slackpkg script to prevent
+ problems with . in the PATH
+ - Fix in filelist.awk, the ARCH upgrade brokes "search" function
+ (Thanks gar0t0)
+ - Move syntax checking from slackpkg to core-functions.sh
+ - To minimize the downloads, now slackpkg first download the
+ ChangeLog and, only if something changes, it download the rest
+ of files.
+
+2006 Wed May 10
+---------------
+ - A new variable in slackpkg.conf (ARCH), with that we can use
+ slackpkg with the unofficial slackware ports, like
+ slackintosh and slamd64. This is VERY experimental.
+ (Inspired by a Carlos C patch, thanx!)
+ - Fix a typo in slackpkg (Thanx Chess Griffin)
+ - Include "readline" in upgrade-all first upgrades
+
+2005 Thu Oct 06
+---------------
+ - Applied patch from Marek Wodzinski
+ - Updating file list, md5 sums etc (in 'slackpkg update' part) are
+ moved from main scipt to core-functions.sh into function
+ updatefilelists().
+ (Thanx Marek!)
+ - showlist() now return list of packages in $SHOWLIST variable.
+ This is preparation for dialog function to really choose
+ for which packages we want to say 'yes'.
+ (Thanx Marek!)
+ - Don't copy/download .asc files if $NOGPG=1
+ (Thanx Marek!)
+ - slackpkg number bumped to 1.99beta -:)
+
+2005 Sun Sep 12
+---------------
+ - Correct one mirror typo (Thanx Daniel de Kok)
+ - Repackaged (1.5.2-2)
+
+2005 Sun Sep 11
+---------------
+ - Correct removing temporary dirs.
+ - Better error handling
+ - Fix post-functions to not show the question when the only .new files
+ are rc.inet1.conf.new, shadow.new, group.new, passwd.new and
+ gshadow.new.
+ - Change version number to 1.5.2
+ - Released slackpkg 1.5.2
+
+2005 Wed Aug 17
+---------------
+ - Fix some blacklist problems (problems AGAIN with the + signal)
+ - Updated mirrors file
+ (Thanks fizban)
+ - Change version number to 1.5.1
+ - Released slackpkg 1.5.1
+
+2005 Tue Aug 02
+---------------
+ - Fix copyright notices (to include 2004 and 2005)
+ - Fix mirrors file
+ (Thanks fizban and Ivan Kalvachev)
+
+2005 Fri Jul 29
+---------------
+ - Fix some errors creating temporary dirs on slackware 10.0 and
+ earlier.
+ (Thanks Sasha Shipka)
+
+2005 Fri Jul 22
+---------------
+ - Correct a little problem in clean-system. When clean-system
+ don't found any package to clen, it already shows the "question".
+ Now it exits the program.
+ (Thanks mrgoblin)
+ - New mirrors list. Now including the (not released yet)
+ slackware 10.2. Now we are ready to the next slackware release -:)
+ (Thanks fizban)
+ - Released slackpkg 1.5.0!
+
+2005 Thu Jul 21
+---------------
+ - Correct many typos and spelling errors
+ (Thanks fizban, amrit and mrgoblin for this help!)
+ - Don't run post-install if the action is clean-system
+ - Now, if something goes wrong when slackpkg run, in the end of
+ operation we will show a BIG WARNING. And no more reports about
+ that -;)
+ (Thanks amrit to help me with the message)
+ - Another fix with the "+" signal, now in remove option.
+ - Fix the default action in:
+ "Do you wish to xxxxxx selected packages (Y/n)?"
+ The default should be "Y", but is "n". Now it's corrected and
+ the default is "Y".
+ (Thanks gar0t0)
+
+2005 Wed Jul 20
+---------------
+ - Correct tabulation errors in usage
+ (Thanks Steven E. Woorlard)
+ - Some problems with the "+" signal in upgrade-all. Solved Now.
+ (Thanks Sulamita Garcia)
+ - Wrong version number in slackpkg's now is 1.5.0 (unreleased)
+ . Put correct version in /usr/sbin/slackpkg
+ . Put correct version in slackpkg's man page
+ - Put new options and correct some small things in man page
+ - Same thing, but now in README
+
+2005 Tue Jul 19
+---------------
+ - Changed number version to 1.4.99 is a beta release to slackpkg 1.5
+ - Included two new options:
+ . clean-system (suggested by Steven E. Woolard)
+ Removes from the machine all packages removed
+ from slackware. It removes packages external of
+ distro, too. Keep your house clean, man!
+ . upgrade-all (suggested by Jaroslav Imrich)
+ Look all installed packages and keep it synced
+ with the mirror. The "true" way to get all distro
+ upgraded.
+ - Changes in "post-install" features. Now they are more closer to
+ the script in slackware's UPGRADE.TXT
+
+2005 Wed Jun 22
+---------------
+ - Changed small problem with some "trash" temporary files.
+ - Released slackpkg 1.4.1
+
+2005 Tue Jun 21
+---------------
+ - Change the "remove" behavior, now it's remove not only one package,
+ but all packs with the same "beginning" (slackpkg remove kde,
+ removes all kde* packs).
+ (Thanks web-knows)
+ - Using now secure temporary files, created by mktemp.
+ (Thanks Larhzu)
+ - Changed version to 1.4.1 (security and bug fixes)
+
+2005 Thu Jan 27
+---------------
+ - OK, i released 1.4 yesterday, but mrgoblin send to me some patches
+ a few minutes after send 1.4
+ . I don't change the version number (is almost the same pack)
+ . Fixed many and many grammar errors in slackpkg program files
+ . Correct a small error in post-install
+ - Released 1.4 (again)
+
+2005 Tue Jan 25
+---------------
+ - Forgot some "echo" debug messages. Now they are all removed and
+ the post-install really works. (thanks toledo)
+ - Don't run post-install when update/remove/search/blacklist
+ (thanks toledo)
+ - Added blacklist list option (thanks toledo, again!)
+ - Changed version number to 1.4
+
+2005 Mon Jan 24
+---------------
+ - Added post-install functions! -;) After upgrade/reinstall/whatever
+ your packages, now slackpkg searchs for NEW configuration files
+ (.new) and checks if your kernel is updated (and runs lilo).
+
+2005 Wed Jan 26
+---------------
+ - include "info" in post-install's don't runs.
+ - redirect some warning and md5sum errors to /dev/null.
+ (thanks phrag)
+ - correct some typos in slackpkg's description
+ (thanks phrag)
+ - Released 1.4
+
+2005 Tue Jan 11
+---------------
+ - Finally solved some gpg errors. Some users had telled that error
+ to me but i can't reproduce. Yesterday i saw one machine with the
+ stupid error and made a fix -:) gpg don't works without .gnupg dir
+ and not create that dir -:(
+
+2004 Wed Dec 29
+---------------
+ - Changed /usr/doc dir from 1.3 to 1.3.1
+ - Removed many vim's backup files
+ - Released 1.3.1
+
+2004 Mon Dec 20
+---------------
+ - change all "/etc/slackpkg" to ${CONF}. Now is safe change the
+ configuration dir of slackpkg.
+ (Thanx toledo)
+ - added "How many" packages in package list. Is a little cosmetic
+ change but don't hurt.
+ (Thanx toledo)
+
+2004 Wed Nov 24
+---------------
+ - fixed regexp to support ./pasture/package.tgz
+ Fixed /usr/libexec/slackpkg/core-functions.sh to support packages in
+ both ./somedir/ (eg. ./pasture/proftpd-1.2.10-i486-1.tgz) and ./
+ somedir/seconddir/ instead of only second one.
+ (Thanx Marek Wodzinski)
+ - Changed version number to 1.3.1
+
+2004 Fri Nov 12
+---------------
+ - Some mirrors from Ireland are in the wrong place (Italy). It's
+ fixed now.
+ (Thanx Marek Januszewski)
+ - Changed number version on /usr/sbin/slackpkg, now is 1.3, not 1.2.2
+
+2004 Mon Nov 01
+---------------
+ - Massive updates in /etc/slackpkg/mirrors. Many mirrors included and
+ many deleted.
+ - Added "dummy" support to 10.1 mirrors... if it had 10.0 and an
+ updated current, we put one 10.1 entry... now we only needs to wait
+ new slackware releases -;)
+ (Thanx Jorge Arellano Cid)
+
+2004 Fri Oct 29
+---------------
+ - Don't use temporary files to uncompress MANIFEST.bz2, now we are
+ using pipes, that approach drastically reduces the amount of disk
+ space needed to "slackpkg update"
+ (Thanx Maxim Krikun)
+ - Removed vi backup files from slackpkg package
+ - Changed version to 1.3
+
+2004 Wed Oct 13
+---------------
+ - Fixed error in install script. Removed de leading / in slackpkg's
+ configuration path.
+ (Thanx Valter Douglas Lisbôa Júnior)
+ - Fixed some problems when two (or more) packages had the same name,
+ version, etc... now slackpkg picks only the first pack.
+ (Thanx to Alexandre Pinaffi Andrucioli)
+
+2004 Mon Jun 21
+---------------
+ - Updated "mirrors" file. Now we are ready to slackware 10.0!!
+ (Thanx Lorn!)
+
+2004 Tue Jun 15
+---------------
+ - Changed version to 1.2.2
+
+2004 Mon Jun 14
+---------------
+ - Exclude "testing". Testing packages aren't to be installed
+ through automated tools. Testing needs more care from sysadmin
+ - Removed aaa_base from default blacklist (aaa_elflibs will stay
+ here).
+
+2004 Wed May 19
+---------------
+ - Changed version to 1.2.1
+
+2004 Thu May 06
+---------------
+ - Fixed CRLF in slackpkg.conf.new and blacklist.new.
+ - Changed "usage" message. Now we have more information about
+ slackpkg use
+
+2004 Wed Apr 14
+---------------
+ - Fixed another bug in regex. Problems with "+" again...
+ (reported by gar0t0, thanx!)
+ - Fixed typing and grammar errors in slackpkg.conf and blacklist.
+ (Thanx mRgOBLIN)
+
+2004 Tue Apr 13
+---------------
+ - Fixed a bug in "parser". GPG checking now are better.
+ (Thanx mRgOBLIN)
+ - Added aaa_elflibs in default blacklist.
+ from volkerdi@slackware.com:
+ > A word of advice: you should ***NEVER*** upgradepkg aaa_elflibs.
+ > It's well-known that it can downgrade some shared libraries and
+ > lead to bugs
+ - Added aaa_base too...
+
+2004 Mon Apr 05
+---------------
+ - Non-root can (again) use info and search. Changes in other places
+ change the behavior of slackpkg "parser"...
+ - Fixed a bug with "." and "+" in filenames.
+
+2004 Wed Mar 31
+---------------
+ - Fixed one bug in "search" (yes, another bug!) (Thanx toledo, again)
+ - Change (again) the behavior of "Do you want to...". Now it's much
+ more logic, Y or y or <nothing> continues, any other key, quit.
+
+2004 Tue Mar 30
+---------------
+ - Revert behavior of "Do you want to foobar those packages (Y/n)" back
+ to original. N or n quits, any other key continue
+
+2004 Fri Mar 26
+---------------
+ - One more "error" message (isn't a error... it's more a info)
+ - Some cosmetic changes in other messages
+ - Another fix in "search" bug. (Thanx toledo)
+
+2004 Thu Mar 25
+---------------
+ - Fixed some bugs added by the regex changes.
+ - Added a test to "first time running". Now slackpkg give some
+ tips to the user...
+ - Change the GPG download behavior. Now, if doesn't have the slackware
+ GPG key, the key will be downloaded in "slackpkg update"
+
+2004 Wed Mar 24
+---------------
+ - Fixed many regex bugs and changes a lot of "greps".
+ - Fixed ls bugs -- changed to "ls -1" to stop multi column lists
+ - Added sed substitutions to fix problems with + in packagenames
+ - Altered awk script in info case statement to properly format output
+ when more than one result is returned
+ - Changed showlist function so that only Y/y will continue, any other
+ character will cleanup -- safeguards against a wrong key pressed
+ (all these fix cames from mRgOBLIN)
+ - Another feature to "non-root" users... now they can use "info"
+
+2004 Mon Mar 22
+---------------
+ - Search function all overwrited by mRgOBLIN. The new function fixes
+ some bugs and add a feature, telling to the user what package needs
+ upgrade and the name of newer package version.
+ - Minor changes in some error messages
+ - Now "non-root" users can use "search" without install Slackware GPG
+ Key...
+
+2004 Thu Mar 18
+---------------
+ - Put an error message when md5sum or gpg doesn't match.
+ (Thanx mRgOBLIN)
+ - Correct filelist.awk to fix some UGLY bugs in search function.
+ Now it's correct.
+ (Thanx mRgOBLIN, for the bug report and the tip of fix)
+
+2004 Mon Mar 01
+---------------
+ - Added GPG function. Now slackpkg check all packages against its
+ .asc file. This option are enabled by default, if you doesn't like
+ that, you can change the configuration in /etc/slackpkg/slackpkg.conf
+
+2004 Thu Feb 26
+---------------
+ - Fixed a bug with VIM package (yes, the bug affect only
+ vim package...)
+ - A little change in makelist function. Now we got our speed
+ back... when fixed duplicate packages the fix make slackpkg
+ more slow (4 minutes to make list for "slackpkg upgrade slackware").
+ Now we doesn't have duplicated packages and have back our normal
+ speed (1 minute to "slackpkg upgrade slackware" list)
+ - Change version on all places to 1.03.1
+
+2004 Tue Feb 18
+---------------
+ - Now when we show a big package list, you can scroll with "more"
+ and can see all packages
+ - Bug fix! Something changed in FILELIST.TXT and slackpkg brokes
+ all package lists. Now it's ok.
+ (Thanx to chvt and Steven De Kock)
+ - New man-page provided by Rob. Thanx!
+ - Changed VERSION to 1.03
+
+2004 Tue Feb 10
+---------------
+ - We added a new system to make easy add new functions in slackpkg.
+ You only needs put your new function in a shell script and that
+ script under /usr/share/slackpkg/functions.d
+
+ With that, if you want GPG checking (example), you only needs
+ add one checkgpg function and rewrite/change the getpkg. It's
+ a nice way of extend slackpkg.
+
+ - Changed /usr/share to /usr/libexec. It makes more sense.
+ (Thanx thefallen)
+ - Fixed blacklist duplicate packages problem. Blacklist doesn't use
+ the default makelist function (now it uses).
+ (Thanx chvt for bug reports)
+
+2004 Thu Feb 06
+---------------
+ - Corrected a little bug in makelist option. Some packages are
+ duplicated in the list. Now it's correct.
+ - Put "update" in "case-esac". It is the only option in a "if-fi"
+
+2004 Thu Feb 05
+---------------
+ - Version are wrong in VERSION var. Now it's good.
+ - A lot of design changes. The "new" output style is a big mistake.
+ I am reverting slackpkg to the old one.
+ - We are splitting slackpkg in two parts. One with slackpkg functions
+ and other with the main program itself. It's really good.
+ - Put all options in a big "case-esac" instead multiple "if-fi"
+
+2004 Mon Feb 02
+---------------
+ - A new "sleep" test to solve problems in Slackware 9.1
+ - One tr -d "\r" to fix a bug in pkglist generation
+ (Thanx to Anatol)
+ - Added a new "clean" of tmp files in the slackpkg startup. It fixes
+ some ugly errors (slackpkg never-ends, slackpkg duplicate packages,
+ etc...)
+ (Thanx Lorn, toledo and gar0t0)
+ - Little changes in "info" now you will give an error if try to see
+ a "generic" info. "info" needs one package-name.
+
+2004 Fri Jan 30
+---------------
+ - Put a spinning bar when making one slow action. Thanx to toledo!!!
+ The code for spinning bar works really fine, and now our users can
+ see: "something is happenning..."
+ - Edit a lot of small things in everywhere to use spinning bar.
+ - man-page, README and other docs are "updated".
+ - fixed some sleep problems in slackware 8.1/9.0, now our program call
+ an internal sleep function
+
+2004 Wed Jan 21
+---------------
+ - Fixed "update" option. When we work with local dirs, the PACKAGES.TXT
+ are not "downloaded".
+
+2004 Mon Jan 19
+---------------
+ - New option added! slackpkg info package can tell to you the
+ information about that package.
+ - Correct some small bugs in cutpkg (very small bugs... i can detect
+ they only now!!!)
+ - Changed update option to download PACKAGES.TXT too...
+
+2004 Fri Jan 17
+---------------
+ - Changed the default wget to not show any info. Now we got a much more
+ cleaner output on screen.
+ - Corrected some bugs in new clean output system
+
+2004 Mon Jan 12
+---------------
+ - Changed the ChangeLog file format.
+ - Corrected a bug in blacklist option. It's the same bug that happenned
+ in "download" option. The bug are reported by Toledo (again)
+ - Now slackpkg can "search" files in /extra and /pasture too
+
+Tue Nov 11 - Fixed a little problem with duplicated packages in reinstall
+ function.
+ - Corrected a bug in download option. It asks to "download" from
+ an empty line. Now it's fixed (bug report by Toledo)
+
+Mon Nov 10 - Changed version to 1.00
+ . we have 1.00beta, 1.00beta1 and 1.00beta2 in internal tests
+ - Many, many changes in the backend...
+ . The package scan are completely rewroted. Now we can
+ make the package list 30% faster than old code.
+ . Now we have a lot of functions. The code are much more
+ flexible and readable
+ . Thanx to Jochem Kossen!
+ - New "download" function.
+ . Thanx to DaMouse!
+ - Some english typos corrected... (and some new introduced)
+ - Upgraded the man-page and README
+
+Thu Sep 25 - Updated man-page to show blacklist option
+ - Updated README to show blacklist option and to show the correct
+ release number.
+ - Correct the "usage" message to include blacklist option
+ - Ok, we remove kernel-* from blacklist and put in here a
+ message telling automated upgrade kernel-* isn't a good idea.
+ A lot of people tell me blacklist need to be empty... and i
+ approve that idea.
+ - Change the way of how detect packages that will be upgraded or
+ reinstalled. Old way thinks: package-1.2.3-i386-1 are the same
+ of package-1.2.3-i386-12345, now it's correct.
+ - Now slackpkg checks if the package is already in
+ /var/cache/packages before to download. If it's in cache, only
+ upgrade|install|reinstall, don't make a new download.
+ . Thanx Leandro Toledo
+
+Wed Sep 24 - Added "blacklist" command, to put packages in blacklist.
+ put all i18n packages manually is terrible.
+
+ slackpkg blacklist kde-i18n
+
+ will be help you (and me).
+ - Updated mirrors list. slackware 9.1 isn't out but we are
+ ready -:) (Thanx Cubano)
+ - Changed search function. Now, if we have one package installed
+ in your machine and one different in the MIRROR, the slackpkg
+ will tell to you to [ upgrade ]. Suggested by Nathan Morell
+ - Changed version to 0.99.1
+
+Fri Sep 19 - Putting all kernel-packages in blacklist file.
+ It's a better idea upgrade kernel packages manually
+ Thanx to Buick_Sk.
+
+Mon Sep 15 - A warning telling to users DOESN'T USE ftp.slackware.com as your
+ default mirror.
+ - Merged a patch from pvg, making the package selection more
+ acurated,
+ - Changed version number to 0.99
+ - Changed owner of some files and gzipped man-page. That makes
+ the package more "Slackware" compliant (Thanks Patrick)
+ - Leandro Toledo makes a patch with some fixes in CHECKSUMS.MD5
+ download.
+ - Changed default package locations from /usr/local/packages to
+ /var/cache/packages. It's more compatible with FHS specifications
+ Thanx Patrick.
+
+Thu Aug 21 - Finally!!! One man page!!! Now slackpkg have a man-page and
+ you can type: man slackpkg to see more info.
+ . Thanx for William N. Zanatta for that manpage
+ - More syntax checkings... slackpkg have a lot of syntax checkings
+
+Wed Aug 20 - Changes in md5sum checking code. Original code are more
+ technical, but more complex. New code more clean.
+
+Tue Aug 19 - Changed version number to 0.98
+ - Now we have md5sum check of packages. With that, is very
+ hard install a corrupt pack.
+ . Thanx for William N. Zanatta for that code
+ - Now we can install/upgrade/reinstall from a CD-ROM or other
+ dir in your HD.
+ - Some code cleanups using functions instead duplicate code.
+ - Corrected a bug in permissions check. Now, a normal user can
+ search for one (or more) files in packages.
+
+Fri Aug 01 - Updated mirrors file (now Slackware 9.0!!!)
+ . Thanx Cubano, Udontknow and gar0t0
+ - Fixed problem with DELALL (old DELALL doesn't delete all,
+ delete only the last pack, now it works well and delete
+ really all)
+ . Thanx Isaque Galdino for the bug report and fix
+ - Deprecated MANIFEST.gz now the system only reads MANIFEST.bz2
+ - Fixed a lot of typos (Udontknow)
+ - Check if the user is root before trying upgrade/install/remove
+ a package
+
+Thu Apr 10 - Added blacklist support with the packages that can't be
+ upgraded/installed/uninstalled.
+ . Thanx Gondim for that idea
+ - Changed version number to 0.96
+
+Fri Apr 04 - Fix a bug with the kernel-sources package. Before that fix,
+ kernel-source are invisible to slackpkg
+
+Mon Mar 17 - Changed MANIFEST.gz to MANIFEST.bz2 (Patrick has changed that
+ and a lot of mirrors have changed too...)
+ - Fix a lock bug.
+ - Changed version number to 0.95
+
+Wed Mar 12 - Changed FILELIST.TXT filter to exclude .asc files
+ - Changed version number to 0.94
+
+Fri Feb 28 - Better "case" structure to select between
+ install|upgrade|reinstall
+ - Now we have an LOCK file. No more two slackpkg working at
+ same time.
+ - A trap and cleanup function to remove all garbage generated
+ by slackpkg.
+
+Fri Feb 14 - Change release number to 0.93
+ - New install scripts, no more erased confs
+ - New option in slackpkg.conf, WGETFLAGS. Now you can specify
+ some wget confs with that option.
+ - New feature, reinstall.
+ install -> install new software
+ upgrade -> upgrade existing software with new version.
+ reinstall -> re-install already installed software
+ - Some upgrades in package lists generation.
+
+Wed Feb 5 - Change release number to 0.92
+ - Correct search to know if other version (not in MANIFEST) of
+ software is installed.
+ - New tests to validate configuration files syntax
+ - No more default mirror. You really need to choice.
+ - Finally, a README file!
+ - Change slackpkg command location to /usr/sbin
+
+Thu Jan 23 - Change release number to 0.91
+ - Add new function: search! Now you can search in slackware package
+ and find a "selected" file.
+ - More fixes in system messages... much more complete.
+ - New tests to validate command syntax before execution.
+
+Wed Jan 22 - Some feature fix in 0.90
+ . Check if package can be installed/upgraded BEFORE download
+ . Cosmetic fix in some system messages.
+
+Tue Jan 21 - First public release 0.90
diff --git a/source/ap/slackpkg/files/GPL b/source/ap/slackpkg/files/GPL
new file mode 100644
index 00000000..d60c31a9
--- /dev/null
+++ b/source/ap/slackpkg/files/GPL
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program 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 2 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, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/source/ap/slackpkg/files/README b/source/ap/slackpkg/files/README
new file mode 100644
index 00000000..32456be4
--- /dev/null
+++ b/source/ap/slackpkg/files/README
@@ -0,0 +1,70 @@
+ slackpkg - Automated Tool for Management of Slackware Linux Packages
+ ---------------------------------------------------------------------
+ Authors: Piter PUNK aka Roberto F Batista
+ <piterpunk@slackware.com>
+ Evaldo Gardenali aka UdontKnow
+ <evaldo@fasternet.com.br>
+
+ Version: 0.93 released at Fri Feb 14 2003
+ 0.94 released at Wed Mar 12 2003
+ 0.95 released at Mon Mar 17 2003
+ 0.96 released at Thu Apr 10 2003
+ 0.97 released at Fri Aug 01 2003
+ 0.98 released at Tue Aug 19 2003
+ 0.99 released at Mon Sep 15 2003
+ 0.99.1 released at Wed Sep 24 2003
+ 1.00 released at Mon Nov 10 2003
+ 1.02 released at Fri Jan 30 2004
+ 1.02.1 released at Mon Feb 02 2004
+ 1.02.2 released at Mon Feb 02 2004
+ 1.03 released at Wed Feb 18 2004
+ 1.03.1 released at Thu Feb 26 2004
+ 1.1 released at Mon Mar 01 2004
+ 1.2 released at Tue Mar 30 2004
+ 1.2.1 released at Wed May 19 2004
+ 1.2.2 released at Tue Jun 15 2004
+ 1.3 released at Mon Nov 01 2004
+ 1.3.1 released at Wed Dec 29 2004
+ 1.4 released at Wed Jan 26 2005
+ 1.4.1 released at Tue Jun 22 2005
+ 1.5.0 released at Fri Jul 22 2005
+ 1.5.1 released at Wed Aug 17 2005
+ 1.5.2 released at Sun Sep 11 2005
+ 2.03 released at Thu May 18 2006
+ 2.04 released at Fri May 26 2006
+ 2.05 released at Thu Jun 08 2006
+ 2.06 released at Fri Jul 28 2006
+ 2.07 released at Sun Aug 13 2006
+ 2.08 released at Fri Aug 18 2006
+ 2.09 released at Mon Aug 28 2006
+ 2.52 released at Sat Mar 17 2007
+ 2.60 released at Tue May 08 2007
+ 2.61 released at Sat Jun 09 2007
+ 2.70 released at Tue Jan 29 2008
+ 2.70.1 released at Sat Mar 15 2008
+ 2.70.2 released at Tue Apr 08 2008
+ 2.70.3 released at Wed Apr 30 2008
+ 2.70.4 released at Fri May 01 2008
+ 2.70.5 released at Thu Dec 04 2008
+ 2.71 released at Thu Apr 23 2009
+ 2.71.1 released at Sat May 02 2009
+ 2.80 released at Thu Jun 18 2009
+ 2.80.1 released at Tue Jul 14 2009
+ 2.80.2 released at Thu Jul 30 2009
+ 2.81 released at Fri Apr 23 2010
+ 2.81.1 released at Thu May 13 2010
+ 2.82.0 released at Thu Mar 24 2011
+ 2.82.1 released at Wed May 11 2016
+
+ Slackpkg is a tool for those who want to easily install or upgrade packages
+ via the network. With slackpkg, you can have a minimal installation of
+ Slackware Linux and install/upgrade only those packages you need most.
+
+ You don't need to setup NFS or make dozens of CDs for all your computers;
+ all you need to do is to type one command and all the latest official
+ Slackware packages will be at your fingertips.
+
+ For more information about slackpkg, see its man pages:
+ man 8 slackpkg
+ man 5 slackpkg.conf
+
diff --git a/source/ap/slackpkg/files/blacklist.new b/source/ap/slackpkg/files/blacklist.new
new file mode 100644
index 00000000..743477b3
--- /dev/null
+++ b/source/ap/slackpkg/files/blacklist.new
@@ -0,0 +1,38 @@
+# This is a blacklist file. Any packages listed here won't be
+# upgraded, removed, or installed by slackpkg.
+#
+# The correct syntax is:
+#
+# To blacklist the package xorg-server-1.6.3-x86_64-1 the line will be:
+# xorg-server
+#
+# DON'T put any space(s) before or after the package name or regexp.
+# If you do this, the blacklist will NOT work.
+
+#
+# Automated upgrade of kernel packages aren't a good idea (and you need to
+# run "lilo" after upgrade). If you think the same, uncomment the lines
+# below
+#
+#kernel-firmware
+#kernel-generic
+#kernel-generic-smp
+#kernel-headers
+#kernel-huge
+#kernel-huge-smp
+#kernel-modules
+#kernel-modules-smp
+#kernel-source
+
+#
+# aaa_elflibs should NOT be blacklisted!
+#
+
+# You can blacklist using regular expressions.
+#
+# Don't use *full* regex here, because all of the following
+# will be checked for the regex: series, name, version, arch,
+# build and fullname.
+#
+# This one will blacklist all SBo packages:
+#[0-9]+_SBo
diff --git a/source/ap/slackpkg/files/core-functions.sh b/source/ap/slackpkg/files/core-functions.sh
new file mode 100644
index 00000000..948afbbe
--- /dev/null
+++ b/source/ap/slackpkg/files/core-functions.sh
@@ -0,0 +1,1351 @@
+
+#========================================================================
+#
+# PROGRAM FUNCTIONS
+#
+
+# Clean-up tmp and lock files
+#
+function cleanup() {
+ [ "$SPINNING" = "off" ] || tput cnorm
+ if [ -e $TMPDIR/error.log ]; then
+ echo -e "
+\n==============================================================================
+WARNING! WARNING! WARNING! WARNING! WARNING!
+==============================================================================
+One or more errors occurred while slackpkg was running:
+"
+ cat $TMPDIR/error.log
+ echo -e "
+=============================================================================="
+ fi
+ echo
+ if [ "$DELALL" = "on" ] && [ "$NAMEPKG" != "" ]; then
+ rm $CACHEPATH/$NAMEPKG &>/dev/null
+ fi
+ ( rm -f /var/lock/slackpkg.$$ && rm -rf $TMPDIR ) &>/dev/null
+ exit
+}
+trap 'cleanup' 2 14 15 # trap CTRL+C and kill
+
+# This create an spinning bar
+spinning() {
+ local WAITFILE
+ local SPININTERVAL
+ local COUNT
+
+ if [ "$SPIN" = "" ]; then
+ SPIN=( "|" "/" "-" "\\" )
+ fi
+ COUNT=${#SPIN[@]}
+
+ [ -n "$1" ] && WAITFILE=$1 || WAITFILE=/tmp/waitfile
+ [ -n "$2" ] && SPININTERVAL=$2 || SPININTERVAL=0.1
+
+ count=0
+ tput civis
+ while [ -e $WAITFILE ] ; do
+ count=$(( count + 1 ))
+ tput sc
+ echo -n ${SPIN[$(( count % COUNT ))]}
+ tput rc
+ sleep $SPININTERVAL
+ done
+ tput cnorm
+}
+
+# System setup
+#
+function system_setup() {
+
+ # Set LOCAL if mirror isn't through network
+ # If mirror is through network, select the command to fetch
+ # files and packages from there.
+ #
+ MEDIA=${SOURCE%%:*}
+ if [ "$MEDIA" = "cdrom" ] || [ "$MEDIA" = "file" ] || \
+ [ "$MEDIA" = "local" ]; then
+ SOURCE=/${SOURCE#${MEDIA}://}
+ LOCAL=1
+ else
+ LOCAL=0
+ if [ "$DOWNLOADER" = "curl" ]; then
+ DOWNLOADER="curl ${CURLFLAGS} -o"
+ else
+ DOWNLOADER="wget ${WGETFLAGS} -O"
+ fi
+ fi
+
+ # Set MORECMD, EDITCMD and check BATCH mode
+ #
+ if [ "$BATCH" = "on" ] || [ "$BATCH" = "ON" ]; then
+ DIALOG=off
+ SPINNING=off
+ MORECMD=cat
+ EDITCMD=vi
+ if [ "$DEFAULT_ANSWER" = "" ]; then
+ DEFAULT_ANSWER=n
+ fi
+ else
+ if [ "${PAGER}" ]; then
+ MORECMD="${PAGER}"
+ else
+ MORECMD=more
+ fi
+ if [ "${EDITOR}" ]; then
+ EDITCMD="${EDITOR}"
+ else
+ EDITCMD=vi
+ fi
+ fi
+
+ # Set ARCH, SLACKKEY and others by slackware port
+ #
+ if [ "$ARCH" = "" ]; then
+ ARCH=$(uname -m)
+ fi
+ case $ARCH in
+ i386|i486|i586|i686)
+ ARCH=[i]*[3456x]86[^_]*
+ SLACKKEY=${SLACKKEY:-"Slackware Linux Project <security@slackware.com>"}
+ PKGMAIN=${PKGMAIN:-slackware}
+ ;;
+ x86-64|x86_64|X86-64|X86_64)
+ ARCH=x86[_64]*
+ SLACKKEY=${SLACKKEY:-"Slackware Linux Project <security@slackware.com>"}
+ PKGMAIN=${PKGMAIN:-slackware64}
+ ;;
+ s390)
+ ARCH=s390
+ # Slack390 didn't have signed packages
+ CHECKGPG=off
+ PKGMAIN=${PKGMAIN:-slackware}
+ ;;
+ arm*)
+ ARCH=arm[v5tel]*
+ SLACKKEY=${SLACKKEY:-"ARMedslack Security (ARMedslack Linux Project Security) <security@armedslack.org>"}
+ PKGMAIN=${PKGMAIN:-slackware}
+ ;;
+ powerpc|ppc)
+ ARCH=powerpc
+ SLACKKEY=${SLACKKEY:-"Slackintosh-Project Sign <slackdev@workaround.ch>"}
+ PKGMAIN=${PKGMAIN:-slackintosh}
+ ;;
+ *)
+ ARCH=none
+ ;;
+ esac
+
+ # Sub %PKGMAIN with the correct $PKGMAIN value
+ #
+ MAIN=$PKGMAIN
+ for i in 0 1 2 3 4 ; do
+ if [ "${PRIORITY[$i]}" = "%PKGMAIN" ]; then
+ PRIORITY[$i]=$PKGMAIN
+ fi
+ done
+
+ TEMPLATEDIR=$CONF/templates
+ if [ ! -d $TEMPLATEDIR ]; then
+ mkdir $TEMPLATEDIR
+ fi
+
+ SLACKCFVERSION=$(grep "# v[0-9.]\+" $CONF/slackpkg.conf | cut -f2 -dv)
+ CHECKSUMSFILE=$WORKDIR/CHECKSUMS.md5
+ KERNELMD5=$(md5sum /boot/vmlinuz 2>/dev/null)
+ DIALOG_MAXARGS=${DIALOG_MAXARGS:-19500}
+ echo "$0 $VERSION - Slackware Linux $SLACKWARE_VERSION" > $TMPDIR/timestamp
+}
+
+# Syntax Checking
+#
+function system_checkup() {
+
+ # Check slackpkg.conf version
+ #
+ SLCKCFVL=$( expr length $SLACKCFVERSION )
+ if [ "$SLACKCFVERSION" != "$( echo $VERSION |cut -c1-$SLCKCFVL)" ] &&\
+ [ "$CMD" != "new-config" ]; then
+ echo -e "\
+\nYour slackpkg.conf is outdated. Please, edit it using slackpkg.conf.new\n\
+as example or overwrite it with slackpkg.conf.new.\n\
+\nYou can use 'slackpkg new-config' to do that.\n"
+ cleanup
+ fi
+
+ # Check if ARCH is set
+ #
+ if [ "$ARCH" = "none" ] && [ "$CMD" != "new-config" ]; then
+ echo -e "\
+\nThe ARCH values in slackpkg.conf are now different. You can remove\n\
+ARCH from there, and slackpkg you use your current ARCH or you can look\n\
+at slackpkg.conf.new or slackpkg.conf manual page to see the new valid\n\
+ARCH values\n"
+ cleanup
+ fi
+
+ # Check if the config files are updated to the new slackpkg version
+ #
+ if [ "$WORKDIR" = "" ]; then
+ echo -e "\
+\nYou need to upgrade your slackpkg.conf.\n\
+This is a new slackpkg version and many changes happened in config files.\n\
+In ${CONF}/slackpkg.conf.new, there is a sample of the new configuration.\n\
+\nAfter updating your configuration file, run: slackpkg update\n"
+ cleanup
+ fi
+
+ # Checking if another instance of slackpkg is running
+ #
+ if [ "$(ls /var/lock/slackpkg.* 2>/dev/null)" ] && \
+ [ "$CMD" != "search" ] && \
+ [ "$CMD" != "help" ] && \
+ [ "$CMD" != "file-search" ]; then
+ echo -e "\
+\nAnother instance of slackpkg is running. If this is not correct, you can\n\
+remove /var/lock/slackpkg.* files and run slackpkg again.\n"
+ cleanup
+ else
+ ls /var/lock/slackpkg.* &>/dev/null || \
+ touch /var/lock/slackpkg.$$
+ fi
+
+ # Checking if the we can create TMPDIR
+ #
+ if [ "$TMPDIR" = "FAILED" ]; then
+ echo -e "\
+\nA problem was encountered writing to slackpkg's temporary dir in /tmp.\n\
+Check to ensure you have permissions to write in /tmp and make sure the\n\
+filesystem is not out of free space. Run slackpkg again after correcting\n\
+the problem.\n"
+ cleanup
+ fi
+
+ # Checking if is the first time running slackpkg
+ #
+ if ! [ -f ${WORKDIR}/pkglist ] && [ "$CMD" != "update" ]; then
+ if [ "$SOURCE" = "" ]; then
+ echo -e "\
+\nThis appears to be the first time you have run slackpkg.\n\
+Before you install|upgrade|reinstall anything, you need to uncomment\n\
+ONE mirror in ${CONF}/mirrors and run:\n\n\
+\t# slackpkg update\n\n\
+You can see more information about slackpkg functions in slackpkg manpage."
+ cleanup
+ elif [ "$CMD" != "new-config" ]; then
+ echo -e "\
+\nThe package list is missing.\n\
+Before you install|upgrade|reinstall anything you need to run:\n\n\
+\t# slackpkg update\n"
+ cleanup
+ fi
+ fi
+
+
+ # Checking if /etc/slackpkg/mirrors are in correct syntax.
+ #
+ if [ "$SOURCE" = "" ] ; then
+ echo -e "\
+\nYou do not have any mirror selected in ${CONF}/mirrors\n\
+Please edit that file and uncomment ONE mirror. Slackpkg\n\
+only works with ONE mirror selected.\n"
+ cleanup
+ else
+ COUNT=$(echo $SOURCE | wc -w | tr -d " ")
+ if [ "$COUNT" != "1" ]; then
+ echo -e "\n\
+Slackpkg only works with ONE mirror selected. Please edit your\n\
+${CONF}/mirrors and comment all but one line - two or more\n\
+mirrors uncommented is not valid syntax.\n"
+ cleanup
+ fi
+ fi
+
+ # It will check if the mirror selected are ftp.slackware.com
+ # if set to "ftp.slackware.com" tell the user to choose another
+ #
+ if echo ${SOURCE} | grep "^ftp://ftp.slackware.com" &>/dev/null ; then
+ echo -e "\n\
+Please use one of the mirrors.\n\
+ftp.slackware.com should be reserved so that the\n\
+official mirrors can be kept up-to-date.\n"
+ cleanup
+ fi
+
+ # Also check if the mirror selected is ftp://mirrors.slackware.com
+ # if set to "ftp://mirrors.slackware.com" tell the user to choose another
+ #
+ if echo ${SOURCE} | grep "^ftp://mirrors.slackware.com" &>/dev/null ; then
+ echo -e "\n\
+Please use http://mirrors.slackware.com instead.\n\
+ftp://mirrors.slackware.com does not handle redirects \n\
+to the closest mirror and is very slow.\n"
+ cleanup
+ fi
+
+ # Checking if the user has the permissions to install/upgrade/update
+ #
+ if [ "$(id -u)" != "0" ] && \
+ [ "$CMD" != "search" ] && \
+ [ "$CMD" != "file-search" ] && \
+ [ "$CMD" != "check-updates" ] && \
+ [ "$CMD" != "info" ]; then
+ echo -e "\n\
+Only root can install, upgrade, or remove packages.\n\
+Please log in as root or contact your system administrator.\n"
+ cleanup
+ fi
+
+ # Check if the "which" command is there
+ if ! which which 1>/dev/null 2>/dev/null ; then
+ echo -e "\n\
+No 'which' command found, please install it if you want to\n\
+use slackpkg.\n"
+ cleanup
+ fi
+
+ # Check if we have md5sum in the PATH. Without md5sum, disables
+ # md5sum checks
+ #
+ if ! [ $(which md5sum 2>/dev/null) ]; then
+ CHECKMD5=off
+ elif ! [ -f ${WORKDIR}/CHECKSUMS.md5 ] && \
+ [ "$CMD" != "update" ] && \
+ [ "$CHECKMD5" = "on" ]; then
+ echo -e "\n\
+No CHECKSUMS.md5 found! Please disable md5sums checking\n\
+on your ${CONF}/slackpkg.conf or run slackpkg update\n\
+to download a new CHECKSUMS.md5 file.\n"
+ cleanup
+ fi
+
+ # Check if awk is installed
+ #
+ if ! [ "$(which awk 2>/dev/null)" ]; then
+ echo -e "\n\
+awk package not found! Please install awk before you run slackpkg,\n\
+as slackpkg cannot function without awk.\n"
+ cleanup
+ fi
+
+ # Check if tput is there
+ #
+ if ! which tput 1>/dev/null 2>/dev/null ; then
+ SPINNING=off
+ fi
+
+ # Check if gpg is enabled but no GPG command are found.
+ #
+ if ! [ "$(which gpg 2>/dev/null)" ] && [ "${CHECKGPG}" = "on" ]; then
+ CHECKGPG=off
+ echo -e "\n\
+gpg package not found! Please disable GPG in ${CONF}/slackpkg.conf or install\n\
+the gnupg package.\n\n\
+To disable GPG, edit slackpkg.conf and change the value of the CHECKGPG \n\
+variable to "off" - you can see an example in the original slackpkg.conf.new\n\
+file distributed with slackpkg.\n"
+ sleep 5
+ fi
+
+ # Check if the Slackware GPG key are found in the system
+ #
+ GPGFIRSTTIME="$(gpg --list-keys \"$SLACKKEY\" 2>/dev/null \
+ | grep -c "$SLACKKEY")"
+ if [ "$GPGFIRSTTIME" = "0" ] && \
+ [ "$CMD" != "search" ] && \
+ [ "$CMD" != "file-search" ] && \
+ [ "$CMD" != "info" ] && \
+ [ "$CMD" != "new-config" ] && \
+ [ "$CMD" != "update" ] && \
+ [ "$CMD" != "check-updates" ] && \
+ [ "$CHECKGPG" = "on" ]; then
+ echo -e "\n\
+You need the GPG key of $SLACKKEY.\n\
+To download and install that key, run:\n\n\
+\t# slackpkg update gpg\n\n\
+You can disable GPG checking too, but it is not a good idea.\n\
+To disable GPG, edit slackpkg.conf and change the value of the CHECKGPG\n\
+variable to "off" - you can see an example in the original slackpkg.conf.new\n\
+file distributed with slackpkg.\n"
+ cleanup
+ fi
+ echo
+}
+
+# Got the name of a package, without version-arch-release data
+#
+function cutpkg() {
+ echo ${1/%.t[blxg]z/} | awk -F- -f /usr/libexec/slackpkg/cutpkg.awk
+}
+
+# The same, but reading packages from stdin
+#
+function batchcutpkg() {
+ awk -F- -f /usr/libexec/slackpkg/cutpkg.awk
+}
+
+# Show the slackpkg usage
+#
+function usage() {
+ echo -e "\
+slackpkg - version $VERSION\n\
+\nUsage:\n\
+\tslackpkg [OPTIONS] {install|remove|search|file-search|
+\t\t\t upgrade|reinstall|blacklist} {PATTERN|FILE}
+\tslackpkg [OPTIONS] {generate-template|install-template|remove-template}
+\t\t\t TEMPLATENAME
+\tslackpkg [OPTIONS] info PACKAGE
+\tslackpkg [OPTIONS] update [gpg]
+\tslackpkg [OPTIONS] {clean-system|upgrade-all|install-new}
+\tslackpkg [OPTIONS] {new-config|check-updates|help}
+\nIf you need more information try to use 'slackpkg help' or look the\n\
+slackpkg's manpage.
+"
+ cleanup
+}
+
+function full_usage() {
+ echo -e "\
+slackpkg - version $VERSION\n\
+\nUsage: \tslackpkg update [gpg]\t\tdownload and update files and
+\t\t\t\t\tpackage indexes
+\tslackpkg check-updates\t\tcheck if there is any news on
+\t\t\t\t\tSlackware's ChangeLog.txt
+\tslackpkg install package\tdownload and install packages
+\tslackpkg upgrade package\tdownload and upgrade packages
+\tslackpkg reinstall package\tsame as install, but for packages
+\t\t\t\t\talready installed
+\tslackpkg remove package\t\tremove installed packages
+\tslackpkg clean-system\t\tremove all packages which are not
+\t\t\t\t\tpresent in the official Slackware
+\t\t\t\t\tpackage set. Good to keep the house
+\t\t\t\t\tin order
+\tslackpkg upgrade-all\t\tsync all packages installed in your
+\t\t\t\t\tmachine with the selected mirror. This
+\t\t\t\t\tis the "correct" way to upgrade all of
+\t\t\t\t\tyour machine.
+\tslackpkg install-new\t\tinstall packages which are added to
+\t\t\t\t\tthe official Slackware package set.
+\t\t\t\t\tRun this if you are upgrading to another
+\t\t\t\t\tSlackware version or using "current".
+\tslackpkg blacklist\t\tBlacklist a package. Blacklisted
+\t\t\t\t\tpackages cannot be upgraded, installed,
+\t\t\t\t\tor reinstalled by slackpkg
+\tslackpkg download\t\tOnly download (do not install) a package
+\tslackpkg info package\t\tShow package information
+\t\t\t\t\t(works with only ONE package)
+\tslackpkg search package\t\tSearch packages that have a
+\t\t\t\t\tselected name
+\tslackpkg file-search file\tSearch for a specific file in the
+\t\t\t\t\tentire package collection
+\tslackpkg new-config\t\tSearch for new configuration files and
+\t\t\t\t\task to user what to do with them.
+\tslackpkg generate-template\tCreate a template with all
+\t\t\t\t\tofficial Slackware packages installed
+\t\t\t\t\tin your machine.
+\tslackpkg install-template\tInstall selected template.
+\tslackpkg remove-template\tRemove selected template. Be careful.
+\tslackpkg help\t\t\tShow this screen.
+\nYou can see more information about slackpkg usage and some examples
+in slackpkg's manpage. You can use partial package names (such as xorg
+instead of xorg-server, xorg-docs, etc), or even Slackware series
+(such as "n","ap","xap",etc) when searching for packages.
+"
+ cleanup
+}
+
+# Verify if we have enough disk space to install selected package
+#
+function havespace() {
+ local DSIZE
+ local ASIZE
+ DSIZE=$(grep "^${1}" ${TMPDIR}/tempsize | \
+ awk 'BEGIN { tot=0 } { tot+=$2 } END { print int(tot/1024)+1}')
+ ASIZE=$(df ${1} | awk '/% \// { print 0+$(NF-2) }')
+ if [ ${DSIZE} -gt ${ASIZE} ] ; then
+ ISOK=0
+ fi
+}
+
+function checksize() {
+ local i
+ local ISOK=1
+ tar -tvf ${1} | tr -s ' ' | grep -v '^[dl]' | cut -f6,3 -d\ | \
+ sed 's,[^/]*$,,' | awk '
+ { size[$2]+=$1 }
+ END {
+ for (i in size) {
+ print "/"i,size[i]
+ }
+ }' > ${TMPDIR}/tempsize
+
+ for i in $(tac /proc/mounts | grep "^/dev" |cut -f2 -d\ ); do
+ if grep -q "^${i}" ${TMPDIR}/tempsize ; then
+ havespace ${i}
+ grep -v "^${i}/" ${TMPDIR}/tempsize > ${TMPDIR}/tempsize.tmp
+ mv ${TMPDIR}/tempsize.tmp ${TMPDIR}/tempsize
+ fi
+ done
+ echo ${ISOK}
+}
+
+# Verify if the package was corrupted by checking md5sum
+#
+function checkmd5() {
+ local MD5ORIGINAL
+ local MD5DOWNLOAD
+
+ MD5ORIGINAL=$( grep -v "/source/" ${CHECKSUMSFILE} |\
+ grep -m1 "/$(basename $1)$" | cut -f1 -d \ )
+ MD5DOWNLOAD=$(md5sum ${1} | cut -f1 -d \ )
+ if [ "$MD5ORIGINAL" = "$MD5DOWNLOAD" ]; then
+ echo 1
+ else
+ echo 0
+ fi
+}
+
+# Verify the GPG signature of files/packages
+#
+function checkgpg() {
+ gpg --verify ${1}.asc ${1} 2>/dev/null && echo "1" || echo "0"
+}
+
+# Found packages in repository.
+# This function selects the package from the higher priority
+# repository directories.
+#
+function givepriority {
+ local DIR
+ local ARGUMENT=$1
+ local PKGDATA
+
+ unset NAME
+ unset FULLNAME
+ unset PKGDATA
+
+ for DIR in ${PRIORITY[@]} ; do
+ [ "$PKGDATA" ] && break
+ PKGDATA=( $(grep "^${DIR} ${ARGUMENT} " ${TMPDIR}/pkglist) )
+ if [ "$PKGDATA" ]; then
+ NAME=${PKGDATA[1]}
+ FULLNAME=$(echo "${PKGDATA[5]}.${PKGDATA[7]}")
+ fi
+ done
+}
+
+# Creates files with mirror package names (spkg), local package
+# names (lpkg) and packages unique to one or other file (dpkg)
+#
+function listpkgname() {
+ cut -f2 -d\ ${TMPDIR}/pkglist | sort > ${TMPDIR}/spkg
+ cut -f2 -d\ ${TMPDIR}/tmplist | sort > ${TMPDIR}/lpkg
+ cat ${TMPDIR}/pkglist ${TMPDIR}/tmplist | \
+ cut -f2-6 -d\ |sort | uniq -u | \
+ cut -f1 -d\ | uniq > ${TMPDIR}/dpkg
+}
+
+function applyblacklist() {
+ grep -vEw -f ${TMPDIR}/blacklist
+}
+
+# Function to make install/reinstall/upgrade lists
+#
+function makelist() {
+ local ARGUMENT
+ local i
+ local VRFY
+
+ INPUTLIST=$@
+
+ grep -vE "(^#|^[[:blank:]]*$)" ${CONF}/blacklist > ${TMPDIR}/blacklist
+ if echo $CMD | grep -q install ; then
+ ls -1 $ROOT/var/log/packages/* | awk -f /usr/libexec/slackpkg/pkglist.awk > ${TMPDIR}/tmplist
+ else
+ ls -1 $ROOT/var/log/packages/* | awk -f /usr/libexec/slackpkg/pkglist.awk | applyblacklist > ${TMPDIR}/tmplist
+ fi
+ cat ${WORKDIR}/pkglist | applyblacklist > ${TMPDIR}/pkglist
+
+ touch ${TMPDIR}/waiting
+
+ case "$CMD" in
+ clean-system)
+ echo -n "Looking for packages to remove. Please wait... "
+ ;;
+ upgrade-all)
+ echo -n "Looking for packages to upgrade. Please wait... "
+ ;;
+ install-new)
+ echo -n "Looking for NEW packages to install. Please wait... "
+ ;;
+ *-template)
+ echo -n "Looking for packages in \"$ARG\" template to ${CMD/%-template/}. Please wait..."
+ ;;
+ *)
+ echo -n "Looking for $(echo $INPUTLIST | tr -d '\\') in package list. Please wait... "
+ ;;
+ esac
+
+ [ "$SPINNING" = "off" ] || spinning ${TMPDIR}/waiting &
+
+ case "$CMD" in
+ download)
+ for ARGUMENT in $(echo $INPUTLIST); do
+ for i in $(grep -w -- "${ARGUMENT}" ${TMPDIR}/pkglist | cut -f2 -d\ | sort -u); do
+ LIST="$LIST $(grep " ${i} " ${TMPDIR}/pkglist | cut -f6,8 -d\ --output-delimiter=.)"
+ done
+ LIST="$(echo -e $LIST | sort -u)"
+ done
+ ;;
+ blacklist)
+ for ARGUMENT in $(echo $INPUTLIST); do
+ for i in $(cat ${TMPDIR}/pkglist ${TMPDIR}/tmplist | \
+ grep -w -- "${ARGUMENT}" | cut -f2 -d\ | sort -u); do
+ grep -qx "${i}" ${CONF}/blacklist || LIST="$LIST $i"
+ done
+ done
+ ;;
+ install|upgrade|reinstall)
+ for ARGUMENT in $(echo $INPUTLIST); do
+ for i in $(grep -w -- "${ARGUMENT}" ${TMPDIR}/pkglist | cut -f2 -d\ | sort -u); do
+ givepriority $i
+ [ ! "$FULLNAME" ] && continue
+
+ case $CMD in
+ 'upgrade')
+ VRFY=$(cut -f6 -d\ ${TMPDIR}/tmplist | \
+ grep -x "${NAME}-[^-]\+-\(noarch\|fw\|${ARCH}\)-[^-]\+")
+ [ "${FULLNAME/%.t[blxg]z/}" != "${VRFY}" ] && \
+ [ "${VRFY}" ] && \
+ LIST="$LIST ${FULLNAME}"
+ ;;
+ 'install')
+ grep -q " ${NAME} " ${TMPDIR}/tmplist || \
+ LIST="$LIST ${FULLNAME}"
+ ;;
+ 'reinstall')
+ grep -q " ${FULLNAME/%.t[blxg]z} " ${TMPDIR}/tmplist && \
+ LIST="$LIST ${FULLNAME}"
+ ;;
+ esac
+ done
+ done
+ ;;
+ remove)
+ for ARGUMENT in $(echo $INPUTLIST); do
+ for i in $(cat ${TMPDIR}/pkglist ${TMPDIR}/tmplist | \
+ grep -w -- "${ARGUMENT}" | cut -f6 -d\ | sort -u); do
+ PKGDATA=( $(grep -w -- "$i" ${TMPDIR}/tmplist) )
+ [ ! "$PKGDATA" ] && continue
+ LIST="$LIST ${PKGDATA[5]}"
+ unset PKGDATA
+ done
+ done
+ ;;
+ clean-system)
+ listpkgname
+ for i in $(comm -2 -3 ${TMPDIR}/lpkg ${TMPDIR}/spkg) ; do
+ PKGDATA=( $(grep -- "^local $i " ${TMPDIR}/tmplist) )
+ [ ! "$PKGDATA" ] && continue
+ LIST="$LIST ${PKGDATA[5]}"
+ unset PKGDATA
+ done
+ ;;
+ upgrade-all)
+ listpkgname
+ for i in $(comm -1 -2 ${TMPDIR}/lpkg ${TMPDIR}/dpkg | \
+ comm -1 -2 - ${TMPDIR}/spkg) ; do
+
+ givepriority ${i}
+ [ ! "$FULLNAME" ] && continue
+
+ VRFY=$(cut -f6 -d\ ${TMPDIR}/tmplist | grep -x "${NAME}-[^-]\+-\(noarch\|fw\|${ARCH}\)-[^-]\+")
+ [ "${FULLNAME/%.t[blxg]z}" != "${VRFY}" ] && \
+ [ "${VRFY}" ] && \
+ LIST="$LIST ${FULLNAME}"
+ done
+ ;;
+ install-new)
+ for i in $(awk -f /usr/libexec/slackpkg/install-new.awk ${WORKDIR}/ChangeLog.txt |\
+ sort -u ) dialog aaa_terminfo fontconfig \
+ ntfs-3g ghostscript wqy-zenhei-font-ttf \
+ xbacklight xf86-video-geode ; do
+
+ givepriority $i
+ [ ! "$FULLNAME" ] && continue
+
+ grep -q " ${NAME} " ${TMPDIR}/tmplist || \
+ LIST="$LIST ${FULLNAME}"
+ done
+ ;;
+ install-template)
+ for i in $INPUTLIST ; do
+ givepriority $i
+ [ ! "$FULLNAME" ] && continue
+ grep -q " ${NAME} " ${TMPDIR}/tmplist || \
+ LIST="$LIST ${FULLNAME}"
+ done
+ ;;
+ remove-template)
+ for i in $INPUTLIST ; do
+ givepriority $i
+ [ ! "$FULLNAME" ] && continue
+ grep -q " ${NAME} " ${TMPDIR}/tmplist && \
+ LIST="$LIST ${FULLNAME}"
+ done
+ ;;
+ search|file-search)
+ # -- temporary file used to store the basename of selected
+ # packages.
+
+ PKGNAMELIST=$(tempfile --directory=$TMPDIR)
+
+ if [ "$CMD" = "file-search" ]; then
+ # Search filelist.gz for possible matches
+ for i in ${PRIORITY[@]}; do
+ if [ -e ${WORKDIR}/${i}-filelist.gz ]; then
+ PKGS="$(zegrep -w "${INPUTLIST}" ${WORKDIR}/${i}-filelist.gz | \
+ cut -d\ -f 1 | awk -F'/' '{print $NF}')"
+ for FULLNAME in $PKGS ; do
+ NAME=$(cutpkg ${FULLNAME})
+ grep -q "^${NAME}$" $PKGNAMELIST && continue
+ LIST="$LIST ${FULLNAME}"
+ echo "$NAME" >> $PKGNAMELIST
+ done
+ fi
+ done
+ else
+ for i in ${PRIORITY[@]}; do
+ PKGS=$(grep "^${i}.*${PATTERN}" \
+ ${TMPDIR}/pkglist | cut -f6 -d\ )
+ for FULLNAME in $PKGS ; do
+ NAME=$(cutpkg ${FULLNAME})
+
+ grep -q "^${NAME}$" $PKGNAMELIST && continue
+ LIST="$LIST ${FULLNAME}"
+ echo "$NAME" >> $PKGNAMELIST
+ done
+ done
+ fi
+ rm -f $PKGNAMELIST
+ ;;
+ esac
+ LIST=$(echo -e $LIST | tr \ "\n" | uniq )
+
+ rm ${TMPDIR}/waiting
+
+ echo -e "DONE\n"
+}
+
+# Function to count total of packages
+#
+function countpkg() {
+ local COUNTPKG=$(echo -e "$1" | wc -w)
+
+ if [ "$COUNTPKG" != "0" ]; then
+ echo -e "Total package(s): $COUNTPKG\n"
+ fi
+}
+
+function answer() {
+ if [ "$BATCH" = "on" ]; then
+ ANSWER="$DEFAULT_ANSWER"
+ echo $DEFAULT_ANSWER
+ else
+ read ANSWER
+ fi
+}
+
+function searchlist() {
+ local i
+ local BASENAME
+ local RAWNAME
+ local STATUS
+ local INSTPKG
+
+ for i in $1; do
+ if [ "$BASENAME" = "$(cutpkg ${i})" ]; then
+ continue
+ fi
+ # BASENAME is base package name
+ BASENAME="$(cutpkg ${i})"
+
+ # RAWNAME is Latest available version
+ RAWNAME="${i/%.t[blxg]z/}"
+
+ # Default is uninstalled
+ STATUS="uninstalled"
+
+ # First is the package already installed?
+ # Amazing what a little sleep will do
+ # exclusion is so much nicer :)
+ INSTPKG=$(ls -1 $ROOT/var/log/packages | \
+ grep -e "^${BASENAME}-[^-]\+-\(${ARCH}\|fw\|noarch\)-[^-]\+")
+
+ # INSTPKG is local version
+ if [ ! "${INSTPKG}" = "" ]; then
+
+ # If installed is it uptodate?
+ if [ "${INSTPKG}" = "${RAWNAME}" ]; then
+ STATUS=" installed "
+ echo "[${STATUS}] - ${INSTPKG}"
+ else
+ STATUS=" upgrade "
+ echo "[${STATUS}] - ${INSTPKG} --> ${RAWNAME}"
+ fi
+ else
+ echo "[${STATUS}] - ${RAWNAME}"
+ fi
+ done
+}
+
+# Show the lists and asks if the user want to proceed with that action
+# Return accepted list in $SHOWLIST
+#
+function showlist() {
+ local ANSWER
+ local i
+
+ for i in $1; do echo $i; done | $MORECMD
+ echo
+ countpkg "$1"
+ echo -e "Do you wish to $2 selected packages (Y/n)? \c"
+ answer
+ if [ "$ANSWER" = "N" -o "$ANSWER" = "n" ]; then
+ cleanup
+ else
+ SHOWLIST="$1"
+ continue
+ fi
+}
+
+function getfile() {
+ if [ "$LOCAL" = "1" ]; then
+ echo -e "\t\t\tLinking $1..."
+ if [ -e $1 ]; then
+ ln -s $1 $2 2>/dev/null
+ else
+ return 1
+ fi
+ else
+ echo -e "\t\t\tDownloading $1..."
+ $DOWNLOADER $2 $1
+ fi
+}
+
+# Function to download the correct package and many "checks"
+#
+function getpkg() {
+ local ISOK="1"
+ local ERROR=""
+ local PKGNAME
+ local FULLPATH
+ local NAMEPKG
+ local CACHEPATH
+
+ PKGNAME=( $(grep -m 1 -- "[[:space:]]${1/%.t[blxg]z/}[[:space:]]" ${TMPDIR}/pkglist) )
+ NAMEPKG=${PKGNAME[5]}.${PKGNAME[7]}
+ FULLPATH=${PKGNAME[6]}
+ CACHEPATH=${TEMP}/${FULLPATH}
+
+ # Create destination dir if it isn't there
+ if ! [ -d $CACHEPATH ]; then
+ mkdir -p $CACHEPATH
+ fi
+
+ if ! [ -e ${CACHEPATH}/${NAMEPKG} ]; then
+ echo -e "\nPackage: $1"
+ # Check if the mirror are local, if is local, copy files
+ # to CACHEPATH else, download packages from remote host and
+ # put then in CACHEPATH
+ #
+ getfile ${SOURCE}${FULLPATH}/${NAMEPKG} \
+ ${CACHEPATH}/${NAMEPKG}
+ if [ "$CHECKGPG" = "on" ]; then
+ getfile ${SOURCE}${FULLPATH}/${NAMEPKG}.asc \
+ ${CACHEPATH}/${NAMEPKG}.asc
+ fi
+
+ if ! [ -e ${CACHEPATH}/$1 ]; then
+ ERROR="Not found"
+ ISOK="0"
+ echo -e "${NAMEPKG}:\t$ERROR" >> $TMPDIR/error.log
+ fi
+ else
+ echo -e "\tPackage $1 is already in cache - not downloading"
+ fi
+
+ # Check if we have sufficient disk space to install selected package
+ if [ "$CHECKSIZE" = "on" ] && [ "$ISOK" = "1" ]; then
+ ISOK=$(checksize ${CACHEPATH}/$1)
+ if [ "$ISOK" = "0" ]; then
+ ERROR="Insufficient disk space"
+ echo -e "${NAMEPKG}:\t$ERROR" >> $TMPDIR/error.log
+ fi
+ fi
+
+ # If MD5SUM checks are enabled in slackpkg.conf, check the
+ # packages md5sum to detect if they are corrupt or not
+ #
+ if [ "$CHECKMD5" = "on" ] && [ "$ISOK" = "1" ]; then
+ ISOK=$(checkmd5 ${CACHEPATH}/$1)
+ if [ "$ISOK" = "0" ]; then
+ ERROR="md5sum"
+ echo -e "${NAMEPKG}:\t$ERROR" >> $TMPDIR/error.log
+ fi
+ if [ "$CHECKGPG" = "on" ] && [ "$ISOK" = "1" ]; then
+ ISOK=$(checkmd5 ${CACHEPATH}/$1.asc)
+ if [ "$ISOK" = "0" ]; then
+ ERROR="md5sum"
+ echo -e "${NAMEPKG}.asc:\t$ERROR" >> \
+ $TMPDIR/error.log
+ fi
+ fi
+ fi
+
+ # Check the package against its .asc. If you don't like this
+ # disable GPG checking in /etc/slackpkg/slackpkg.conf
+ #
+ if [ "$CHECKGPG" = "on" ] && [ "$ISOK" = "1" ]; then
+ ISOK=$(checkgpg ${CACHEPATH}/$1)
+ if [ "$ISOK" = "0" ]; then
+ ERROR="gpg"
+ echo -e "${NAMEPKG}:\t$ERROR" >> $TMPDIR/error.log
+ fi
+ fi
+
+ if [ "$ISOK" = "1" ]; then
+ case $2 in
+ installpkg)
+ echo -e "\tInstalling ${1/%.t[blxg]z/}..."
+ ;;
+ upgradepkg)
+ echo -e "\tUpgrading ${1/%.t[blxg]z/}..."
+ ;;
+ *)
+ echo -e "\c"
+ ;;
+ esac
+ ( cd $CACHEPATH && $2 $1 )
+ else
+ rm $CACHEPATH/$1 2>/dev/null
+ echo -e "\tERROR - Package not installed! $ERROR error!"
+ fi
+
+ # If DELALL is checked, all downloaded files will be erased
+ # after installed/upgraded/reinstalled
+ #
+ if [ "$DELALL" = "on" ]; then
+ rm $CACHEPATH/$1 $CACHEPATH/${1}.asc 2>/dev/null
+ fi
+}
+
+# Main logic to download and format package list, md5 etc.
+#
+function checkchangelog()
+{
+ if ! [ -e ${WORKDIR}/ChangeLog.txt ]; then
+ touch ${WORKDIR}/ChangeLog.txt
+ fi
+
+ echo -e "\tDownloading..."
+ #
+ # Download ChangeLog.txt first of all and test if it's equal
+ # or different from our already existent ChangeLog.txt
+ #
+ getfile ${SOURCE}ChangeLog.txt $TMPDIR/ChangeLog.txt
+ if ! grep -q "[a-z]" $TMPDIR/ChangeLog.txt ; then
+ echo -e "\
+\nError downloading from $SOURCE.\n\
+Please, check your mirror and try again."
+ cleanup
+ fi
+
+ if diff --brief ${WORKDIR}/ChangeLog.txt $TMPDIR/ChangeLog.txt ; then
+ return 0
+ else
+ return 1
+ fi
+}
+
+function updatefilelists()
+{
+ if checkchangelog ; then
+ echo -e "\
+\n\t\tNo changes in ChangeLog.txt between your last update and now.\n\
+\t\tDo you really want to download all other files (y/N)? \c"
+ answer
+ if [ "$ANSWER" != "Y" ] && [ "$ANSWER" != "y" ]; then
+ cleanup
+ fi
+ fi
+ echo
+ cp ${TMPDIR}/ChangeLog.txt ${WORKDIR}/ChangeLog.txt
+
+ #
+ # Download MANIFEST, FILELIST.TXT and CHECKSUMS.md5
+ #
+
+ # That will be download MANIFEST.bz2 files
+ #
+ echo -e "\t\tList of all files"
+ for i in ${PRIORITY[@]} ; do
+ getfile ${SOURCE}${i}/MANIFEST.bz2 $TMPDIR/${i}-MANIFEST.bz2 && \
+ DIRS="$DIRS $i"
+ done
+
+ ISOK="1"
+ echo -e "\t\tChecksums"
+ getfile ${SOURCE}CHECKSUMS.md5 ${TMPDIR}/CHECKSUMS.md5
+ getfile ${SOURCE}CHECKSUMS.md5.asc ${TMPDIR}/CHECKSUMS.md5.asc
+ if ! [ -e "${TMPDIR}/CHECKSUMS.md5" ]; then
+ echo -e "\
+\n\t\tWARNING: Your mirror appears incomplete and is missing the\n\
+\t\t CHECKSUMS.md5 file. We recommend you change your mirror\n\
+\t\t so that package integrity can be verified against \n\
+\t\t CHECKSUMS.md5.\n"
+ sleep 10
+ else
+ if [ "$CHECKGPG" = "on" ]; then
+ ISOK=$(checkgpg ${TMPDIR}/CHECKSUMS.md5)
+ if [ "$ISOK" = "0" ]; then
+ rm $TMPDIR/CHECKSUMS.md5
+ rm $TMPDIR/CHECKSUMS.md5.asc
+ echo -e "\
+\n\t\tERROR: Verification of the gpg signature on CHECKSUMS.md5\n\
+\t\t failed! This could mean that the file is out of date\n\
+\t\t or has been tampered with.\n"
+ cleanup
+ fi
+ elif [ "$SLACKKEY" != "" ]; then
+ echo -e "\
+\n\t\tWARNING: Without CHECKGPG, we can't check if this file is\n\
+\t\t signed by:\n\
+\n\t\t $SLACKKEY.\n\
+\n\t\t Enabling CHECKGPG is highly recommended for best\n\
+\t\t security.\n"
+ sleep 10
+ fi
+ fi
+
+ ISOK="1"
+ echo -e "\t\tPackage List"
+ getfile ${SOURCE}FILELIST.TXT ${TMPDIR}/FILELIST.TXT
+ if [ "$CHECKMD5" = "on" ]; then
+ CHECKSUMSFILE=${TMPDIR}/CHECKSUMS.md5
+ ISOK=$(checkmd5 ${TMPDIR}/FILELIST.TXT)
+ fi
+ if [ "$ISOK" = "1" ]; then
+ if ! [ -e $WORKDIR/LASTUPDATE ]; then
+ echo "742868196" > $WORKDIR/LASTUPDATE
+ fi
+ LASTUPDATE=$(cat $WORKDIR/LASTUPDATE)
+ ACTUALDATE=$(date -d "$(head -1 $TMPDIR/FILELIST.TXT)" "+%s")
+ if [ $ACTUALDATE -lt $LASTUPDATE ]; then
+ echo -e "\
+\n\t\tFILELIST.TXT seems to be older than the last one.\n\
+\t\tDo you really want to continue (y/N)? \c"
+ answer
+ if [ "$ANSWER" != "Y" ] && [ "$ANSWER" != "y" ]; then
+ cleanup
+ fi
+ echo
+ fi
+ echo $ACTUALDATE > $WORKDIR/LASTUPDATE
+ else
+ rm $TMPDIR/FILELIST.TXT
+ fi
+
+ if [ -e $TMPDIR/CHECKSUMS.md5 ]; then
+ FILELIST="$TMPDIR/CHECKSUMS.md5"
+ elif [ -e $TMPDIR/FILELIST.TXT ]; then
+ if [ "$ISOK" = "0" ]; then
+ echo -e "\
+\n\t\tERROR: CHECKSUMS.md5 signature doesn't match!\n\
+\t\t We strongly recommend that you change your mirror\n\
+\t\t to prevent security problems.\n"
+ cleanup
+ fi
+ sleep 10
+ FILELIST="$TMPDIR/FILELIST.TXT"
+ else
+ echo -e "\
+\n\t\tERROR: No CHECKSUMS.md5 and no FILELIST.TXT.\n\
+\t\t We strongly recommend that you change your mirror\n\
+\t\t to prevent security problems.\n"
+ cleanup
+ fi
+
+ # Download all PACKAGES.TXT files
+ #
+ echo -e "\t\tPackage descriptions"
+ for i in $DIRS; do
+ getfile ${SOURCE}${i}/PACKAGES.TXT $TMPDIR/${i}-PACKAGES.TXT
+ done
+
+ # Format FILELIST.TXT
+ #
+ echo -e "\tFormatting lists to slackpkg style..."
+ echo -e "\t\tPackage List: using $( basename $FILELIST ) as source"
+ grep "\.t[blxg]z$" $FILELIST| \
+ awk -f /usr/libexec/slackpkg/pkglist.awk |\
+ sed -e 's/^M//g' > ${TMPDIR}/pkglist
+ cp ${TMPDIR}/pkglist ${WORKDIR}/pkglist
+
+ # Create the slackware tree under TEMP directory
+ for i in $( cut -f7 -d\ ${WORKDIR}/pkglist | sort -u ) ; do
+ if ! [ -d ${TEMP}/${i} ]; then
+ mkdir -p ${TEMP}/${i}
+ fi
+ done
+
+ # Format MANIFEST
+ #
+
+ # bunzip and concatenate all MANIFEST files
+ #
+ MANFILES=""
+ for i in $DIRS; do
+ bunzip2 -c $TMPDIR/${i}-MANIFEST.bz2 | awk -f /usr/libexec/slackpkg/filelist.awk | \
+ gzip > ${TMPDIR}/${i}-filelist.gz
+ done
+ cp ${TMPDIR}/*-filelist.gz ${WORKDIR}/
+
+ if [ -r ${WORKDIR}/filelist.gz ]; then
+ rm ${WORKDIR}/filelist.gz
+ ln -s ${WORKDIR}/${MAIN}-filelist.gz ${WORKDIR}/filelist.gz
+ fi
+
+ # Concatenate PACKAGE.TXT files
+ #
+ echo -e "\t\tPackage descriptions"
+ for i in $DIRS; do
+ cat $TMPDIR/${i}-PACKAGES.TXT >> $TMPDIR/PACKAGES.TXT
+ done
+ cp $TMPDIR/PACKAGES.TXT ${WORKDIR}/PACKAGES.TXT
+
+ if [ -e $TMPDIR/CHECKSUMS.md5 ]; then
+ cp $TMPDIR/CHECKSUMS.md5 $WORKDIR/CHECKSUMS.md5 2>/dev/null
+ fi
+
+ if [ -e $TMPDIR/CHECKSUMS.md5.asc ]; then
+ cp $TMPDIR/CHECKSUMS.md5.asc \
+ $WORKDIR/CHECKSUMS.md5.asc 2>/dev/null
+ fi
+}
+
+function sanity_check() {
+ local REVNAME
+ local i
+ local FILES
+ local DOUBLEFILES
+ local ANSWER
+
+ touch ${TMPDIR}/waiting
+ echo -e "Checking local integrity... \c"
+
+ [ "$SPINNING" = "off" ] || spinning ${TMPDIR}/waiting &
+
+ for i in $(ls -1 $ROOT/var/log/packages | \
+ egrep -- "^.*-(${ARCH}|fw|noarch)-[^-]+-upgraded"); do
+ REVNAME=$(echo ${i} | awk -F'-upgraded' '{ print $1 }')
+ mv $ROOT/var/log/packages/${i} $ROOT/var/log/packages/${REVNAME}
+ mv $ROOT/var/log/scripts/${i} $ROOT/var/log/scripts/${REVNAME}
+ done
+
+ ls -1 $ROOT/var/log/packages | egrep "^.*-(${ARCH}|fw|noarch)-[^-]+$" | \
+ batchcutpkg | sort > $TMPDIR/list1
+ cat $TMPDIR/list1 | uniq > $TMPDIR/list2
+ FILES="$(diff $TMPDIR/list1 $TMPDIR/list2 | grep '<' | cut -f2 -d\ )"
+ if [ "$FILES" != "" ]; then
+ for i in $FILES ; do
+ grep -qx "${i}" ${CONF}/blacklist && continue
+ DOUBLEFILES="$DOUBLEFILES $i"
+ done
+ unset FILES
+ fi
+
+ rm ${TMPDIR}/waiting
+ echo -e "DONE"
+
+ if [ "$DOUBLEFILES" != "" ]; then
+ echo -e "\
+You have a broken $ROOT/var/log/packages - with two versions of the same package.\n\
+The list of packages duplicated in your machine are shown below, but don't\n\
+worry about this list - when you select your action, slackpkg will show a\n\
+better list:\n"
+ for i in $DOUBLEFILES ; do
+ ls -1 $ROOT/var/log/packages |\
+ egrep -i -- "^${i}-[^-]+-(${ARCH}|fw|noarch)-"
+ done
+ echo -ne "\n\
+You can (B)lacklist, (R)emove, or (I)gnore these packages.\n\
+Select your action (B/R/I): "
+ read ANSWER
+ echo
+ case "$ANSWER" in
+ B|b)
+ showlist "$DOUBLEFILES" blacklist
+ blacklist_pkg
+ ;;
+ R|r)
+ for i in $DOUBLEFILES ; do
+ FILE=$(ls -1 $ROOT/var/log/packages |\
+ egrep -i -- "^${i}-[^-]+-(${ARCH}|fw|noarch)-")
+ FILES="$FILES $FILE"
+ done
+ showlist "$FILES" remove
+ remove_pkg
+ ;;
+ *)
+ echo -e "\n\
+Okay - slackpkg won't do anything now, but please, do something to fix it.\n"
+ cleanup
+ ;;
+ esac
+ fi
+}
+
+function blacklist_pkg() {
+ echo $SHOWLIST | tr ' ' "\n" >> ${CONF}/blacklist
+
+ echo -e "\nPackages added to your blacklist.\n\
+If you want to remove those packages, edit ${CONF}/blacklist.\n"
+}
+
+function remove_pkg() {
+ local i
+
+ for i in $SHOWLIST; do
+ echo -e "\nPackage: $i"
+ echo -e "\tRemoving... "
+ removepkg $i
+ done
+}
+
+function upgrade_pkg() {
+ local i
+
+ if [ "$DOWNLOAD_ALL" = "on" ]; then
+ OLDDEL="$DELALL"
+ DELALL="off"
+ for i in $SHOWLIST; do
+ getpkg $i true
+ done
+ DELALL="$OLDDEL"
+ fi
+ for i in $SHOWLIST; do
+ getpkg $i upgradepkg Upgrading
+ done
+}
+
+function install_pkg() {
+ local i
+
+ if [ "$DOWNLOAD_ALL" = "on" ]; then
+ OLDDEL="$DELALL"
+ DELALL="off"
+ for i in $SHOWLIST; do
+ getpkg $i true
+ done
+ DELALL="$OLDDEL"
+ fi
+ for i in $SHOWLIST; do
+ getpkg $i installpkg Installing
+ done
+}
+
+#
+# Template related functions
+#
+include_includes() {
+ TEMPLATEFILE=$1
+ COUNT=$((COUNT + 1))
+ TMPFILE=$TMPDIR/$(basename $( echo $TEMPLATEFILE | cut -f1,2 -d. )).$COUNT.tmp
+ INCLUDELIST="$( grep "^#include" $TEMPLATEFILE | cut -d\ -f2 )"
+ if [ "$INCLUDELIST" != "" ]; then
+ for INCLUDE in $INCLUDELIST ; do
+ echo "#include $INCLUDE" \
+ >> ${TMPFILE/.$COUNT/}.header
+ cat $INCLUDE > $TMPFILE
+ grep -v "^$" $TEMPLATEFILE | grep -v "^#" >> $TMPFILE
+ include_includes $TMPFILE
+ done
+ else
+ echo $TEMPLATEFILE
+ return
+ fi
+}
+
+parse_template() {
+ if [ "$USE_INCLUDES" = "off" ]; then
+ touch $TMPDIR/$1.header
+ grep -v "^$" $1 | grep -v "^#" | sort -u > $TMPDIR/$1.tmp
+ else
+ TMPFILE=$(include_includes $1)
+ sort -u $TMPFILE > $TMPDIR/$1.tmp
+ if [ -e $TMPDIR/$1.tmp.header ]; then
+ sort -u $TMPDIR/$1.tmp.header > $TMPDIR/$1.header
+ fi
+ rm $TMPDIR/$1.[0-9]*.tmp $TMPDIR/$1.tmp.header 2>/dev/null
+ fi
+}
+
+generate_template() {
+ if [ "$USE_INCLUDES" = "on" ]; then
+ (
+ cd $TEMPLATEDIR
+ if [ "$(ls *.template 2>/dev/null)" != "" ]; then
+ echo -e "\tParsing actual template files:"
+ for i in *.template ; do
+ echo -e "\t\t$i"
+ parse_template $i
+ done
+ fi
+ )
+ fi
+
+ touch $TMPDIR/allheaders
+
+ touch $TMPDIR/waiting
+ echo -e "\tGenerating slackware installed package list (this may take a while) \c"
+ [ "$SPINNING" = "off" ] || spinning ${TMPDIR}/waiting &
+ for i in $ROOT/var/log/packages/* ; do
+ PKGNAME=$( cutpkg $(basename $i))
+ grep -q " $PKGNAME " ${WORKDIR}/pkglist && \
+ echo $PKGNAME >> $TMPDIR/$TEMPLATE.work
+ done
+ rm $TMPDIR/waiting
+ echo " "
+
+ echo -e "\tGenerating $TEMPLATE "
+ for TMPLATE in $( wc -l $TMPDIR/* | sort -r | \
+ awk -F/ '/template.tmp/ { print $NF }'); do
+ if ! $( grep -q "^#include.*${TMPLATE/.tmp/}" \
+ $TMPDIR/allheaders) ; then
+ diff -y $TMPDIR/$TEMPLATE.work $TMPDIR/$TMPLATE | \
+ awk -vTMPDIR=$TMPDIR \
+ '!/</ { print $1 > TMPDIR"/same" }
+ /</ { print $1 > TMPDIR"/notsame" }'
+ if $( diff -q $TMPDIR/$TMPLATE \
+ $TMPDIR/same &>/dev/null ); then
+ echo "#include ${TMPLATE/.tmp/}" \
+ >> $TMPDIR/$TEMPLATE.header
+ cat $TMPDIR/${TMPLATE/.tmp/}.header \
+ >> $TMPDIR/allheaders 2>/dev/null
+ cat $TMPDIR/same >> $TMPDIR/allfiles
+ fi
+ fi
+ done
+
+ if [ -e $TMPDIR/allfiles ]; then
+ sort -u $TMPDIR/allfiles > $TMPDIR/alluniqfiles
+ else
+ touch $TMPDIR/alluniqfiles
+ fi
+ if [ -e $TMPDIR/$TEMPLATE.header ]; then
+ cat $TMPDIR/$TEMPLATE.header > $TEMPLATEDIR/$TEMPLATE
+ fi
+ diff $TMPDIR/alluniqfiles $TMPDIR/$TEMPLATE.work |\
+ awk '/>/ { print $2 }' >> $TEMPLATEDIR/$TEMPLATE
+}
diff --git a/source/ap/slackpkg/files/cutpkg.awk b/source/ap/slackpkg/files/cutpkg.awk
new file mode 100644
index 00000000..62aaad73
--- /dev/null
+++ b/source/ap/slackpkg/files/cutpkg.awk
@@ -0,0 +1,8 @@
+OFS="-" {
+ if ( NF > 3 ) {
+ NF=NF-3
+ print $0
+ } else {
+ print $0
+ }
+}
diff --git a/source/ap/slackpkg/files/dialog-functions.sh b/source/ap/slackpkg/files/dialog-functions.sh
new file mode 100644
index 00000000..042906c3
--- /dev/null
+++ b/source/ap/slackpkg/files/dialog-functions.sh
@@ -0,0 +1,75 @@
+# Dialog functions
+# Original functions from slackpkg modified by Marek Wodzinski (majek@mamy.to)
+#
+export DIALOG_CANCEL="1"
+export DIALOG_ERROR="126"
+export DIALOG_ESC="1"
+export DIALOG_EXTRA="3"
+export DIALOG_HELP="2"
+export DIALOG_ITEM_HELP="2"
+export DIALOG_OK="0"
+
+# Show the lists and asks if the user want to proceed with that action
+# Return accepted list in $SHOWLIST
+#
+if [ "$DIALOG" = "on" ] || [ "$DIALOG" = "ON" ]; then
+ function showlist() {
+ if [ "$ONOFF" != "off" ]; then
+ ONOFF=on
+ fi
+ rm -f $TMPDIR/dialog.tmp
+
+ if [ "$2" = "upgrade" ]; then
+ ls -1 $ROOT/var/log/packages > $TMPDIR/tmplist
+ for i in $1; do
+ BASENAME=$(cutpkg $i)
+ PKGFOUND=$(grep -m1 -e "^${BASENAME}-[^-]\+-\(noarch\|fw\|${ARCH}\)" $TMPDIR/tmplist)
+ echo "$i \"\" $ONOFF \"currently installed: $PKGFOUND\"" >>$TMPDIR/dialog.tmp
+ done
+ HINT="--item-help"
+ else
+ for i in $1; do
+ echo "$i \"\" $ONOFF" >>$TMPDIR/dialog.tmp
+ done
+ HINT=""
+ fi
+
+ # This is needed because dialog have a limit of arguments.
+ # This limit is around 20k characters in slackware 10.x
+ # Empiric tests on slackware 13.0 got a limit around 139k.
+ # If we exceed this limit, dialog got a terrible error, to
+ # avoid that, if the number of arguments is bigger than
+ # DIALOG_MAXARGS we remove the hints. If even without hints
+ # we can't got less characters than DIALOG_MAXARGS we give an
+ # error message to the user ask him to not use dialog
+ if [ $(wc -c $TMPDIR/dialog.tmp | cut -f1 -d\ ) -ge $DIALOG_MAXARGS ]; then
+ mv $TMPDIR/dialog.tmp $TMPDIR/dialog2.tmp
+ awk '{ NF=3 ; print $0 }' $TMPDIR/dialog2.tmp > $TMPDIR/dialog.tmp
+ HINT=""
+ fi
+ cat $TMPDIR/dialog.tmp|xargs dialog --title $2 --backtitle "slackpkg $VERSION" $HINT --checklist "Choose packages to $2:" 19 70 13 2>$TMPDIR/dialog.out
+ case "$?" in
+ 0|123)
+ dialog --clear
+ ;;
+ 1|124|125|126|127)
+ dialog --clear
+ echo -e "DIALOG ERROR:\n-------------" >> $TMPDIR/error.log
+ cat $TMPDIR/dialog.out >> $TMPDIR/error.log
+ echo -e "-------------
+If you want to continue using slackpkg, disable the DIALOG option in
+/etc/slackpkg/slackpkg.conf and try again.
+
+Help us to make slackpkg a better tool - report bugs to the slackpkg
+developers" >> $TMPDIR/error.log
+ cleanup
+ ;;
+ esac
+ SHOWLIST=$(cat $TMPDIR/dialog.out | tr -d \")
+ rm -f $TMPDIR/dialog.*
+ if [ -z "$SHOWLIST" ]; then
+ echo "No packages selected for $2, exiting."
+ cleanup
+ fi
+ }
+fi
diff --git a/source/ap/slackpkg/files/filelist.awk b/source/ap/slackpkg/files/filelist.awk
new file mode 100644
index 00000000..291624b8
--- /dev/null
+++ b/source/ap/slackpkg/files/filelist.awk
@@ -0,0 +1,28 @@
+BEGIN {
+ starting = 1
+}
+
+/^\|\|[[:blank:]]+Package:[[:blank:]]+.*-[[:alnum:]_]+-[[:alnum:]_.]+\.t[blxg]z$/ {
+ if( starting == 1 )
+ starting = 0
+ else
+ printf( "\n" )
+ printf( "%s ", $3 )
+ show = 1
+}
+
+/^\|\|[[:blank:]]+Package:[[:blank:]]+/ && !/t[blxg]z/ {
+ show = 0
+}
+
+/^[-bcdlps][-r][-w][-xsS][-r][-w][-xsS][-r][-w][-xtT][[:space:]]/ {
+ if( show == 1 ) {
+ printf( "%s ", $6 )
+ }
+}
+
+
+
+END {
+ printf( "\n" )
+}
diff --git a/source/ap/slackpkg/files/install-new.awk b/source/ap/slackpkg/files/install-new.awk
new file mode 100644
index 00000000..d2fd4eeb
--- /dev/null
+++ b/source/ap/slackpkg/files/install-new.awk
@@ -0,0 +1,45 @@
+/^(a|ap|d|e|f|k|kde|kdei|l|mac|n|t|tcl|x|xap|xfce|y)\/([a-zA-Z0-9_\+.\-]+):.* ([Aa]dded|[Ss]plit|[Rr]enamed|[Mm]oved|[Nn]ame [Cc]hange|NAME CHANGE|[Ss]witched).*/ {
+ INPUT=$1
+ fs=FS
+ FS="/" ; OFS="/"
+ $0=INPUT
+ FULLPACK=$NF
+ FS="-" ; OFS="-"
+ $0=FULLPACK
+ if ( NF > 3 ) {
+ NF=NF-3
+ } else {
+ FS=":" ; OFS=":"
+ $0=$0
+ $0=$1
+ }
+ FS=fs
+ CONTINUE=no
+ print $0
+}
+
+/^(a|ap|d|e|f|k|kde|kdei|l|mac|n|t|tcl|x|xap|xfce|y)\/([a-zA-Z0-9_\+.\-]+): *$/ {
+ INPUT=$1
+ fs=FS
+ FS="/" ; OFS="/"
+ $0=INPUT
+ FULLPACK=$NF
+ FS="-" ; OFS="-"
+ $0=FULLPACK
+ if ( NF > 3 ) {
+ NF=NF-3
+ } else {
+ FS=":"
+ $0=$1
+ }
+ FS=fs
+ CONTINUE=yes
+ NAME=$0
+}
+
+/^ *([Aa]dded|[Ss]plit|[Rr]enamed|[Mm]oved|[Nn]ame [Cc]hange|NAME CHANGE|[Ss]witched).*/ {
+ if ( CONTINUE==yes ) {
+ print NAME
+ }
+ CONTINUE=no
+}
diff --git a/source/ap/slackpkg/files/mirrors-arm.sample b/source/ap/slackpkg/files/mirrors-arm.sample
new file mode 100644
index 00000000..7647abab
--- /dev/null
+++ b/source/ap/slackpkg/files/mirrors-arm.sample
@@ -0,0 +1,99 @@
+# mirrors - List of Slackware Linux mirrors.
+#
+# SlackPkg - An Automated packaging tool for Slackware Linux
+# Copyright (C) 2003-2011 Roberto F. Batista, Evaldo Gardenali
+#
+# This program 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 2 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# Project Page: http://slackpkg.org/
+# Roberto F. Batista (aka PiterPunk) piterpunk@slackware.com
+# Evaldo Gardenali (aka UdontKnow) evaldogardenali@fasternet.com.br
+#
+# END OF LEGAL NOTICE
+#
+#
+# You only need to select one mirror and uncomment them. Please,
+# ONLY ONE mirror can be uncommented each time.
+#
+# You can include new mirrors in this file. Many people have mirrors
+# in their local networks. Slackpkg only needs to point to the
+# directory that contains "ChangeLog.txt", and don't forget the
+# trailling slash.
+#
+#----------------------------------------------------------------
+# Local CD/DVD drive
+#----------------------------------------------------------------
+#cdrom://media/cdrom/
+#
+#----------------------------------------------------------------
+# Local Directory
+#----------------------------------------------------------------
+#file://path/to/some/directory/
+#
+#----------------------------------------------------------------
+# ARMedslack 14.0
+#----------------------------------------------------------------
+#UK, 100MBit
+#ftp://ftp.armedslack.org/armedslack/armedslack-14.0/
+#UK, 100Mbit
+#ftp://ftp.slackware.org.uk/armedslack/armedslack-14.0/
+#Poland, 100Mbit:
+#ftp://ftp.slackware.pl/pub/armedslack/armedslack-14.0/
+#USA, 100Mbit:
+#ftp://mirrors.vbi.vt.edu/linux/armedslack/armedslack-14.0/
+#USA, 100Mbit:
+#ftp://ftp.stealth3.com/pub/armedslack/armedslack-14.0/
+#
+#----------------------------------------------------------------
+# ARMedslack 13.37
+#----------------------------------------------------------------
+#UK, 100MBit
+#ftp://ftp.armedslack.org/armedslack/armedslack-13.37/
+#UK, 100Mbit
+#ftp://ftp.slackware.org.uk/armedslack/armedslack-13.37/
+#Poland, 100Mbit:
+#ftp://ftp.slackware.pl/pub/armedslack/armedslack-13.37/
+#USA, 100Mbit:
+#ftp://mirrors.vbi.vt.edu/linux/armedslack/armedslack-13.37/
+#USA, 100Mbit:
+#ftp://ftp.stealth3.com/pub/armedslack/armedslack-13.37/
+#
+#----------------------------------------------------------------
+# ARMedslack 13.1
+#----------------------------------------------------------------
+#UK, 100MBit
+#ftp://ftp.armedslack.org/armedslack/armedslack-13.1/
+#UK, 100Mbit
+#ftp://ftp.slackware.org.uk/armedslack/armedslack-13.1/
+#Poland, 100Mbit:
+#ftp://ftp.slackware.pl/pub/armedslack/armedslack-13.1/
+#USA, 100Mbit:
+#ftp://mirrors.vbi.vt.edu/linux/armedslack/armedslack-13.1/
+#USA, 100Mbit:
+#ftp://ftp.stealth3.com/pub/armedslack/armedslack-13.1/
+#
+#----------------------------------------------------------------
+# ARMedslack current
+#----------------------------------------------------------------
+#UK, 100MBit
+#ftp://ftp.armedslack.org/armedslack/armedslack-current/
+#UK, 100Mbit
+#ftp://ftp.slackware.org.uk/armedslack/armedslack-current/
+#Poland, 100Mbit:
+#ftp://ftp.slackware.pl/pub/armedslack/armedslack-current/
+#USA, 100Mbit:
+#ftp://mirrors.vbi.vt.edu/linux/armedslack/armedslack-current/
+#USA, 100Mbit:
+#ftp://ftp.stealth3.com/pub/armedslack/armedslack-current/
diff --git a/source/ap/slackpkg/files/mirrors-s390.sample b/source/ap/slackpkg/files/mirrors-s390.sample
new file mode 100644
index 00000000..03cad827
--- /dev/null
+++ b/source/ap/slackpkg/files/mirrors-s390.sample
@@ -0,0 +1,43 @@
+# mirrors - List of Slackware Linux mirrors.
+#
+# SlackPkg - An Automated packaging tool for Slackware Linux
+# Copyright (C) 2003-2011 Roberto F. Batista, Evaldo Gardenali
+#
+# This program 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 2 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# Project Page: http://slackpkg.org/
+# Roberto F. Batista (aka PiterPunk) piterpunk@slackware.com
+# Evaldo Gardenali (aka UdontKnow) evaldogardenali@fasternet.com.br
+#
+# END OF LEGAL NOTICE
+#
+#
+# You only need to select one mirror and uncomment them. Please,
+# ONLY ONE mirror can be uncommented each time.
+#
+# You can include new mirrors in this file. Many people have mirrors
+# in their local networks. Slackpkg only needs to point to the
+# directory that contains "ChangeLog.txt", and don't forget the
+# trailling slash.
+#
+#----------------------------------------------------------------
+# Local CD/DVD drive
+#----------------------------------------------------------------
+#cdrom://media/cdrom/
+#
+#----------------------------------------------------------------
+# Local Directory
+#----------------------------------------------------------------
+#file://path/to/some/directory/
diff --git a/source/ap/slackpkg/files/mirrors-x86.sample b/source/ap/slackpkg/files/mirrors-x86.sample
new file mode 100644
index 00000000..db32e624
--- /dev/null
+++ b/source/ap/slackpkg/files/mirrors-x86.sample
@@ -0,0 +1,441 @@
+# mirrors - List of Slackware Linux mirrors.
+#
+# SlackPkg - An Automated packaging tool for Slackware Linux
+# Copyright (C) 2003-2011 Roberto F. Batista, Evaldo Gardenali
+#
+# This program 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 2 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# Project Page: http://slackpkg.org/
+# Roberto F. Batista (aka PiterPunk) piterpunk@slackware.com
+# Evaldo Gardenali (aka UdontKnow) evaldogardenali@fasternet.com.br
+#
+# END OF LEGAL NOTICE
+#
+#
+# You only need to select one mirror and uncomment it.
+# ONLY ONE mirror can be uncommented.
+#
+# You can use a mirror not included in this file. Many people have mirrors
+# in their local networks. A list of all official Slackware mirrors
+# (not version-specific, so some mirrors may not have all files) is here:
+# http://mirrors.slackware.com/mirrorlist/
+#
+# Slackpkg only needs to point to the directory that contains
+# "ChangeLog.txt", and don't forget the trailing slash.
+#
+#----------------------------------------------------------------
+# Local CD/DVD drive
+#----------------------------------------------------------------
+# cdrom://media/cdrom/
+#
+#----------------------------------------------------------------
+# Local Directory
+#----------------------------------------------------------------
+# file://path/to/some/directory/
+#
+#----------------------------------------------------------------
+# Slackware-14.2
+#----------------------------------------------------------------
+# USE MIRRORS.SLACKWARE.COM (DO NOT USE FTP - ONLY HTTP FINDS A NEARBY MIRROR)
+# http://mirrors.slackware.com/slackware/slackware-14.2/
+#
+# AUSTRALIA (AU)
+# ftp://ftp.cc.swin.edu.au/slackware/slackware-14.2/
+# http://ftp.cc.swin.edu.au/slackware/slackware-14.2/
+# ftp://ftp.iinet.net.au/pub/slackware/slackware-14.2/
+# http://ftp.iinet.net.au/pub/slackware/slackware-14.2/
+# ftp://mirror.aarnet.edu.au/pub/slackware/slackware-14.2/
+# http://mirror.aarnet.edu.au/pub/slackware/slackware-14.2/
+# ftp://mirror.as24220.net/pub/slackware/slackware-14.2/
+# http://mirror.as24220.net/pub/slackware/slackware-14.2/
+# ftp://mirror.internode.on.net/.pub2/slackware/slackware-14.2/
+# http://mirror.internode.on.net/pub/slackware/slackware-14.2/
+# http://mirror.primusdatacentre.com.au/slackware/slackware-14.2/
+# AUSTRIA (AT)
+# ftp://ftp.slackware.at/slackware-14.2/
+# http://ftp.slackware.at/data/slackware-14.2/
+# ftp://gd.tuwien.ac.at/opsys/linux/freesoftware.com/slackware-14.2/
+# http://gd.tuwien.ac.at/opsys/linux/freesoftware.com/slackware-14.2/
+# BELARUS (BY)
+# ftp://mirror.datacenter.by/pub/slackware/slackware-14.2/
+# http://mirror.datacenter.by/pub/slackware/slackware-14.2/
+# BRAZIL (BR)
+# ftp://ftp.slackware-brasil.com.br/slackware-14.2/
+# http://ftp.slackware-brasil.com.br/slackware-14.2/
+# BULGARIA (BG)
+# ftp://mirrors.unixsol.org/slackware/slackware-14.2/
+# http://mirrors.unixsol.org/slackware/slackware-14.2/
+# CANADA (CA)
+# ftp://mirror.csclub.uwaterloo.ca/slackware/slackware-14.2/
+# http://mirror.csclub.uwaterloo.ca/slackware/slackware-14.2/
+# ftp://mirror.its.dal.ca/slackware/slackware-14.2/
+# http://mirror.its.dal.ca/slackware/slackware-14.2/
+# CHINA (CN)
+# http://mirror.bjtu.edu.cn/slackware/slackware-14.2/
+# http://mirrors.163.com/slackware/slackware-14.2/
+# http://mirrors.ustc.edu.cn/slackware/slackware-14.2/
+# COSTA RICA (CR)
+# ftp://mirrors.ucr.ac.cr/slackware/pub/slackware/slackware-14.2/
+# http://mirrors.ucr.ac.cr/slackware/pub/slackware/slackware-14.2/
+# CZECH REPUBLIC (CZ)
+# http://ftp.slackware.cz/slackware/slackware-14.2/
+# ftp://odysseus.linux.cz/pub/linux/slackware/slackware-14.2/
+# http://odysseus.linux.cz/pub/linux/slackware/slackware-14.2/
+# DENMARK (DK)
+# ftp://mirrors.dotsrc.org/.disk1/slackware/slackware-14.2/
+# http://mirrors.dotsrc.org/.disk1/slackware/slackware-14.2/
+# FINLAND (FI)
+# ftp://elektroni.phys.tut.fi/slackware-14.2/
+# FRANCE (FR)
+# ftp://mirror.ovh.net/mirrors/ftp.slackware.com/slackware-14.2/
+# http://mirror.ovh.net/mirrors/ftp.slackware.com/slackware-14.2/
+# ftp://nephtys.lip6.fr/pub/linux/distributions/slackware/slackware-14.2/
+# http://nephtys.lip6.fr/pub/linux/distributions/slackware/slackware-14.2/
+# GERMANY (DE)
+# ftp://ftp.fu-berlin.de/unix/linux/slackware/slackware-14.2/
+# ftp://ftp.gwdg.de/pub/linux/slackware/slackware-14.2/
+# http://ftp.gwdg.de/pub/linux/slackware/slackware-14.2/
+# ftp://ftp.tu-chemnitz.de/.SAN0/pub/linux/slackware/slackware-14.2/
+# http://ftp.tu-chemnitz.de/pub/linux/slackware/slackware-14.2/
+# ftp://ftp.zimt.uni-siegen.de/pub/slackware/slackware-14.2/
+# http://ftp.zimt.uni-siegen.de/slackware/slackware-14.2/
+# ftp://sunsite.informatik.rwth-aachen.de/pub/comp/Linux/slackware/slackware-14.2/
+# http://sunsite.informatik.rwth-aachen.de/ftp/pub/comp/Linux/slackware/slackware-14.2/
+# ftp://wrz1013.rz.uni-wuerzburg.de/pub/MIRROR/slackware/slackware-14.2/
+# http://wrz1013.rz.uni-wuerzburg.de/pub/MIRROR/slackware/slackware-14.2/
+# GREECE (GR)
+# ftp://ftp.cc.uoc.gr/mirrors/linux/slackware/slackware-14.2/
+# http://ftp.cc.uoc.gr/mirrors/linux/slackware/slackware-14.2/
+# ftp://ftp.otenet.gr/pub/linux/slackware/slackware-14.2/
+# http://ftp.otenet.gr/linux/slackware/slackware-14.2/
+# ftp://patroklos.noc.ntua.gr/pub/linux/slackware/slackware-14.2/
+# http://patroklos.noc.ntua.gr/pub/linux/slackware/slackware-14.2/
+# HUNGARY (HU)
+# ftp://ftp.freepark.org/pub/linux/distributions/slackware/slackware-14.2/
+# http://ftp.freepark.org/pub/linux/distributions/slackware/slackware-14.2/
+# INDONESIA (ID)
+# http://kambing.ui.ac.id/slackware/slackware-14.2/
+# ftp://repo.ugm.ac.id/.3/slackware/slackware-14.2/
+# http://repo.ugm.ac.id/.3/slackware/slackware-14.2/
+# http://repo.ukdw.ac.id/slackware/slackware-14.2/
+# IRELAND (IE)
+# ftp://ftp.heanet.ie/mirrors/ftp.slackware.com/pub/slackware/slackware-14.2/
+# http://ftp.heanet.ie/mirrors/ftp.slackware.com/pub/slackware/slackware-14.2/
+# ITALY (IT)
+# ftp://ba.mirror.garr.it/mirrors/Slackware/slackware-14.2/
+# http://ba.mirror.garr.it/mirrors/Slackware/slackware-14.2/
+# JAPAN (JP)
+# ftp://ftp.nara.wide.ad.jp/pub/Linux/slackware/slackware-14.2/
+# http://ftp.nara.wide.ad.jp/pub/Linux/slackware/slackware-14.2/
+# ftp://ftp-srv2.kddilabs.jp/032/Linux/packages/Slackware/slackware-14.2/
+# http://ftp-srv2.kddilabs.jp/032/Linux/packages/Slackware/slackware-14.2/
+# ftp://riksun.riken.go.jp/Linux/slackware/slackware-14.2/
+# http://riksun.riken.go.jp/Linux/slackware/slackware-14.2/
+# LATVIA (LV)
+# ftp://perkons.linux.edu.lv/mirrors/ftp.slackware.com/slackware-14.2/
+# NETHERLANDS (NL)
+# ftp://ftp.nluug.nl/vol/4/slackware/slackware-14.2/
+# http://ftp.nluug.nl/os/Linux/distr/slackware/slackware-14.2/
+# ftp://mirror.nl.leaseweb.net/slackware/slackware-14.2/
+# http://mirror.nl.leaseweb.net/slackware/slackware-14.2/
+# http://taper.alienbase.nl/mirrors/slackware/slackware-14.2/
+# NORWAY (NO)
+# ftp://ftp1.uninett.no/slackware/slackware-14.2/
+# http://ftp1.uninett.no/slackware/slackware-14.2/
+# POLAND (PL)
+# ftp://ftp.man.szczecin.pl/pub/Linux/slackware/slackware-14.2/
+# ftp://ftp.pwr.wroc.pl/pub/linux/slackware/slackware-14.2/
+# http://ftp.pwr.wroc.pl/pub/linux/slackware/slackware-14.2/
+# ftp://ftp.slackware.pl/pub/slackware/slackware-14.2/
+# http://ftp.slackware.pl/pub/slackware/slackware-14.2/
+# ftp://gepard.pbone.net/mirror/ftp.slackware.com/slackware-14.2/
+# ftp://piotrkosoft.net/pub/mirrors/ftp.slackware.com/pub/slackware/slackware-14.2/
+# http://piotrkosoft.net/pub/mirrors/ftp.slackware.com/pub/slackware/slackware-14.2/
+# ftp://sunsite.icm.edu.pl/vol/rzm1/linux-slackware/slackware-14.2/
+# http://sunsite.icm.edu.pl/packages/linux-slackware/slackware-14.2/
+# ftp://z-ftp.wcss.wroc.pl/pub/linux/slackware/slackware-14.2/
+# http://z-ftp.wcss.wroc.pl/pub/linux/slackware/slackware-14.2/
+# PORTUGAL (PT)
+# ftp://darkstar.ist.utl.pt/pub/slackware/slackware-14.2/
+# http://darkstar.ist.utl.pt/pub/slackware/slackware-14.2/
+# RUSSIA (RU)
+# http://mirror.rol.ru/slackware/slackware-14.2/
+# ftp://mirror.yandex.ru/slackware/slackware-14.2/
+# http://mirror.yandex.ru/slackware/slackware-14.2/
+# SERBIA (RS)
+# ftp://mirror2.etf.bg.ac.rs/slackware/slackware-14.2/
+# http://mirror2.etf.bg.ac.rs/slackware/slackware-14.2/
+# SOUTH AFRICA (ZA)
+# ftp://ftp.is.co.za/mirror/ftp.slackware.com/pub/slackware-14.2/
+# http://ftp.is.co.za/mirror/ftp.slackware.com/pub/slackware-14.2/
+# ftp://ftp.wa.co.za/pub/slackware/slackware-14.2/
+# http://ftp.wa.co.za/pub/slackware/slackware-14.2/
+# ftp://slackware.mirror.ac.za/slackware-14.2/
+# http://slackware.mirror.ac.za/slackware-14.2/
+# SWEDEN (SE)
+# ftp://ftp.df.lth.se/pub/slackware/slackware-14.2/
+# http://ftp.df.lth.se/pub/slackware/slackware-14.2/
+# ftp://ftp.sunet.se/pub/os/Linux/distributions/slackware/slackware-14.2/
+# http://ftp.sunet.se/pub/os/Linux/distributions/slackware/slackware-14.2/
+# SWITZERLAND (CH)
+# ftp://mirror.switch.ch/mirror/slackware/slackware-14.2/
+# http://mirror.switch.ch/ftp/mirror/slackware/slackware-14.2/
+# TAIWAN (TW)
+# ftp://ftp.isu.edu.tw/pub/Linux/Slackware/slackware-14.2/
+# http://ftp.isu.edu.tw/pub/Linux/Slackware/slackware-14.2/
+# ftp://ftp.twaren.net/pub/Linux/Slackware/slackware-14.2/
+# http://ftp.twaren.net/Linux/Slackware/slackware-14.2/
+# TURKEY (TR)
+# ftp://ftp.linux.org.tr/slackware/slackware-14.2/
+# http://ftp.linux.org.tr/slackware/slackware-14.2/
+# UKRAINE (UA)
+# ftp://mirrors.mithril.org.ua/linux/slackware/slackware-14.2/
+# http://mirrors.mithril.org.ua/linux/slackware/slackware-14.2/
+# UNITED KINGDOM (UK)
+# ftp://ftp.mirrorservice.org/sites/ftp.slackware.com/pub/slackware/slackware-14.2/
+# http://ftp.mirrorservice.org/sites/ftp.slackware.com/pub/slackware/slackware-14.2/
+# ftp://mirror.bytemark.co.uk/slackware/slackware-14.2/
+# http://mirror.bytemark.co.uk/slackware/slackware-14.2/
+# UNITED STATES (US)
+# ftp://carroll.aset.psu.edu/pub/linux/distributions/slackware/slackware-14.2/
+# http://carroll.aset.psu.edu/pub/linux/distributions/slackware/slackware-14.2/
+# ftp://ftp.gtlib.gatech.edu/nv/ao2/lxmirror/ftp.slackware.com/slackware-14.2/
+# ftp://ftp.osuosl.org/.2/slackware/slackware-14.2/
+# http://ftp.osuosl.org/.2/slackware/slackware-14.2/
+# ftp://hpc-mirror.usc.edu/pub/linux/distributions/slackware/slackware-14.2/
+# http://hpc-mirror.usc.edu/pub/linux/distributions/slackware/slackware-14.2/
+# ftp://marmot.tn.utexas.edu/pub/slackware/slackware-14.2/
+# http://marmot.tn.utexas.edu/slackware/slackware-14.2/
+# ftp://mirror.cs.princeton.edu/pub/mirrors/slackware/slackware-14.2/
+# http://mirror.metrocast.net/slackware/slackware-14.2/
+# ftp://mirrors.easynews.com/linux/slackware/slackware-14.2/
+# http://mirrors.easynews.com/linux/slackware/slackware-14.2/
+# http://mirrors.kingrst.com/slackware/slackware-14.2/
+# ftp://mirrors.us.kernel.org/slackware/slackware-14.2/
+# http://mirrors.us.kernel.org/slackware/slackware-14.2/
+# ftp://mirrors.xmission.com/slackware/slackware-14.2/
+# http://mirrors.xmission.com/slackware/slackware-14.2/
+# http://slackbuilds.org/mirror/slackware/slackware-14.2/
+# http://slackware.cs.utah.edu/pub/slackware/slackware-14.2/
+# http://slackware.mirrorcatalogs.com/slackware-14.2/
+# http://slackware.mirrors.pair.com/slackware-14.2/
+# ftp://slackware.mirrors.tds.net/pub/slackware/slackware-14.2/
+# http://slackware.mirrors.tds.net/pub/slackware/slackware-14.2/
+# ftp://slackware.virginmedia.com/mirrors/ftp.slackware.com/slackware-14.2/
+# http://slackware.virginmedia.com/slackware-14.2/
+# ftp://spout.ussg.indiana.edu/linux/slackware/slackware-14.2/
+# http://spout.ussg.indiana.edu/linux/slackware/slackware-14.2/
+# ftp://teewurst.cc.columbia.edu/pub/linux/slackware/slackware-14.2/
+# http://teewurst.cc.columbia.edu/pub/linux/slackware/slackware-14.2/
+#
+#----------------------------------------------------------------
+# Slackware-current
+#----------------------------------------------------------------
+# USE MIRRORS.SLACKWARE.COM (DO NOT USE FTP - ONLY HTTP FINDS A NEARBY MIRROR)
+# http://mirrors.slackware.com/slackware/slackware-current/
+#
+# AUSTRALIA (AU)
+# ftp://ftp.cc.swin.edu.au/slackware/slackware-current/
+# http://ftp.cc.swin.edu.au/slackware/slackware-current/
+# ftp://ftp.iinet.net.au/pub/slackware/slackware-current/
+# http://ftp.iinet.net.au/pub/slackware/slackware-current/
+# ftp://mirror.aarnet.edu.au/pub/slackware/slackware-current/
+# http://mirror.aarnet.edu.au/pub/slackware/slackware-current/
+# ftp://mirror.as24220.net/pub/slackware/slackware-current/
+# http://mirror.as24220.net/pub/slackware/slackware-current/
+# ftp://mirror.internode.on.net/.pub2/slackware/slackware-current/
+# http://mirror.internode.on.net/pub/slackware/slackware-current/
+# http://mirror.primusdatacentre.com.au/slackware/slackware-current/
+# AUSTRIA (AT)
+# ftp://ftp.slackware.at/slackware-current/
+# http://ftp.slackware.at/data/slackware-current/
+# ftp://gd.tuwien.ac.at/opsys/linux/freesoftware.com/slackware-current/
+# http://gd.tuwien.ac.at/opsys/linux/freesoftware.com/slackware-current/
+# BELARUS (BY)
+# ftp://mirror.datacenter.by/pub/slackware/slackware-current/
+# http://mirror.datacenter.by/pub/slackware/slackware-current/
+# BRAZIL (BR)
+# ftp://ftp.slackware-brasil.com.br/slackware-current/
+# http://ftp.slackware-brasil.com.br/slackware-current/
+# BULGARIA (BG)
+# ftp://mirrors.unixsol.org/slackware/slackware-current/
+# http://mirrors.unixsol.org/slackware/slackware-current/
+# CANADA (CA)
+# ftp://mirror.csclub.uwaterloo.ca/slackware/slackware-current/
+# http://mirror.csclub.uwaterloo.ca/slackware/slackware-current/
+# ftp://mirror.its.dal.ca/slackware/slackware-current/
+# http://mirror.its.dal.ca/slackware/slackware-current/
+# CHINA (CN)
+# http://mirror.bjtu.edu.cn/slackware/slackware-current/
+# http://mirrors.163.com/slackware/slackware-current/
+# http://mirrors.ustc.edu.cn/slackware/slackware-current/
+# COSTA RICA (CR)
+# ftp://mirrors.ucr.ac.cr/slackware/pub/slackware/slackware-current/
+# http://mirrors.ucr.ac.cr/slackware/pub/slackware/slackware-current/
+# CZECH REPUBLIC (CZ)
+# ftp://odysseus.linux.cz/pub/linux/slackware/slackware-current/
+# http://odysseus.linux.cz/pub/linux/slackware/slackware-current/
+# DENMARK (DK)
+# ftp://mirrors.dotsrc.org/.disk1/slackware/slackware-current/
+# http://mirrors.dotsrc.org/.disk1/slackware/slackware-current/
+# FINLAND (FI)
+# ftp://elektroni.phys.tut.fi/slackware-current/
+# FRANCE (FR)
+# ftp://mirror.ovh.net/mirrors/ftp.slackware.com/slackware-current/
+# http://mirror.ovh.net/mirrors/ftp.slackware.com/slackware-current/
+# ftp://nephtys.lip6.fr/pub/linux/distributions/slackware/slackware-current/
+# http://nephtys.lip6.fr/pub/linux/distributions/slackware/slackware-current/
+# GERMANY (DE)
+# ftp://ftp.fu-berlin.de/unix/linux/slackware/slackware-current/
+# ftp://ftp.gwdg.de/pub/linux/slackware/slackware-current/
+# http://ftp.gwdg.de/pub/linux/slackware/slackware-current/
+# ftp://ftp.tu-chemnitz.de/.SAN0/pub/linux/slackware/slackware-current/
+# http://ftp.tu-chemnitz.de/pub/linux/slackware/slackware-current/
+# ftp://ftp.zimt.uni-siegen.de/pub/slackware/slackware-current/
+# http://ftp.zimt.uni-siegen.de/slackware/slackware-current/
+# ftp://sunsite.informatik.rwth-aachen.de/pub/comp/Linux/slackware/slackware-current/
+# http://sunsite.informatik.rwth-aachen.de/ftp/pub/comp/Linux/slackware/slackware-current/
+# ftp://wrz1013.rz.uni-wuerzburg.de/pub/MIRROR/slackware/slackware-current/
+# http://wrz1013.rz.uni-wuerzburg.de/pub/MIRROR/slackware/slackware-current/
+# GREECE (GR)
+# ftp://ftp.cc.uoc.gr/mirrors/linux/slackware/slackware-current/
+# http://ftp.cc.uoc.gr/mirrors/linux/slackware/slackware-current/
+# ftp://ftp.otenet.gr/pub/linux/slackware/slackware-current/
+# http://ftp.otenet.gr/linux/slackware/slackware-current/
+# ftp://patroklos.noc.ntua.gr/pub/linux/slackware/slackware-current/
+# http://patroklos.noc.ntua.gr/pub/linux/slackware/slackware-current/
+# HUNGARY (HU)
+# ftp://ftp.freepark.org/pub/linux/distributions/slackware/slackware-current/
+# http://ftp.freepark.org/pub/linux/distributions/slackware/slackware-current/
+# INDONESIA (ID)
+# http://kambing.ui.ac.id/slackware/slackware-current/
+# ftp://repo.ugm.ac.id/.3/slackware/slackware-current/
+# http://repo.ugm.ac.id/.3/slackware/slackware-current/
+# http://repo.ukdw.ac.id/slackware/slackware-current/
+# IRELAND (IE)
+# ftp://ftp.heanet.ie/mirrors/ftp.slackware.com/pub/slackware/slackware-current/
+# http://ftp.heanet.ie/mirrors/ftp.slackware.com/pub/slackware/slackware-current/
+# ITALY (IT)
+# ftp://ba.mirror.garr.it/mirrors/Slackware/slackware-current/
+# http://ba.mirror.garr.it/mirrors/Slackware/slackware-current/
+# JAPAN (JP)
+# ftp://ftp.nara.wide.ad.jp/pub/Linux/slackware/slackware-current/
+# http://ftp.nara.wide.ad.jp/pub/Linux/slackware/slackware-current/
+# ftp://ftp-srv2.kddilabs.jp/032/Linux/packages/Slackware/slackware-current/
+# http://ftp-srv2.kddilabs.jp/032/Linux/packages/Slackware/slackware-current/
+# ftp://riksun.riken.go.jp/Linux/slackware/slackware-current/
+# http://riksun.riken.go.jp/Linux/slackware/slackware-current/
+# LATVIA (LV)
+# ftp://perkons.linux.edu.lv/mirrors/ftp.slackware.com/slackware-current/
+# NETHERLANDS (NL)
+# ftp://ftp.bit.nl/mirror/slackware/slackware-current/
+# http://ftp.bit.nl/mirror/slackware/slackware-current/
+# ftp://ftp.nluug.nl/vol/4/slackware/slackware-current/
+# http://ftp.nluug.nl/os/Linux/distr/slackware/slackware-current/
+# ftp://mirror.nl.leaseweb.net/slackware/slackware-current/
+# http://mirror.nl.leaseweb.net/slackware/slackware-current/
+# http://taper.alienbase.nl/mirrors/slackware/slackware-current/
+# NORWAY (NO)
+# ftp://ftp1.uninett.no/slackware/slackware-current/
+# http://ftp1.uninett.no/slackware/slackware-current/
+# POLAND (PL)
+# ftp://ftp.man.szczecin.pl/pub/Linux/slackware/slackware-current/
+# ftp://ftp.pwr.wroc.pl/pub/linux/slackware/slackware-current/
+# http://ftp.pwr.wroc.pl/pub/linux/slackware/slackware-current/
+# ftp://ftp.slackware.pl/pub/slackware/slackware-current/
+# http://ftp.slackware.pl/pub/slackware/slackware-current/
+# ftp://gepard.pbone.net/mirror/ftp.slackware.com/slackware-current/
+# ftp://piotrkosoft.net/pub/mirrors/ftp.slackware.com/pub/slackware/slackware-current/
+# http://piotrkosoft.net/pub/mirrors/ftp.slackware.com/pub/slackware/slackware-current/
+# ftp://sunsite.icm.edu.pl/vol/rzm1/linux-slackware/slackware-current/
+# http://sunsite.icm.edu.pl/packages/linux-slackware/slackware-current/
+# ftp://z-ftp.wcss.wroc.pl/pub/linux/slackware/slackware-current/
+# http://z-ftp.wcss.wroc.pl/pub/linux/slackware/slackware-current/
+# PORTUGAL (PT)
+# ftp://darkstar.ist.utl.pt/pub/slackware/slackware-current/
+# http://darkstar.ist.utl.pt/pub/slackware/slackware-current/
+# RUSSIA (RU)
+# http://mirror.rol.ru/slackware/slackware-current/
+# ftp://mirror.yandex.ru/slackware/slackware-current/
+# http://mirror.yandex.ru/slackware/slackware-current/
+# SERBIA (RS)
+# ftp://mirror2.etf.bg.ac.rs/slackware/slackware-current/
+# http://mirror2.etf.bg.ac.rs/slackware/slackware-current/
+# SOUTH AFRICA (ZA)
+# ftp://ftp.is.co.za/mirror/ftp.slackware.com/pub/slackware-current/
+# http://ftp.is.co.za/mirror/ftp.slackware.com/pub/slackware-current/
+# ftp://ftp.wa.co.za/pub/slackware/slackware-current/
+# http://ftp.wa.co.za/pub/slackware/slackware-current/
+# ftp://slackware.mirror.ac.za/slackware-current/
+# http://slackware.mirror.ac.za/slackware-current/
+# SWEDEN (SE)
+# ftp://ftp.df.lth.se/pub/slackware/slackware-current/
+# http://ftp.df.lth.se/pub/slackware/slackware-current/
+# ftp://ftp.sunet.se/pub/os/Linux/distributions/slackware/slackware-current/
+# http://ftp.sunet.se/pub/os/Linux/distributions/slackware/slackware-current/
+# SWITZERLAND (CH)
+# ftp://mirror.switch.ch/mirror/slackware/slackware-current/
+# http://mirror.switch.ch/ftp/mirror/slackware/slackware-current/
+# TAIWAN (TW)
+# ftp://ftp.isu.edu.tw/pub/Linux/Slackware/slackware-current/
+# http://ftp.isu.edu.tw/pub/Linux/Slackware/slackware-current/
+# ftp://ftp.twaren.net/pub/Linux/Slackware/slackware-current/
+# http://ftp.twaren.net/Linux/Slackware/slackware-current/
+# TURKEY (TR)
+# ftp://ftp.linux.org.tr/slackware/slackware-current/
+# http://ftp.linux.org.tr/slackware/slackware-current/
+# UKRAINE (UA)
+# ftp://ftp.linux.kiev.ua/pub/Linux/Slackware/slackware-current/
+# http://ftp.linux.kiev.ua/pub/Linux/Slackware/slackware-current/
+# ftp://mirrors.mithril.org.ua/linux/slackware/slackware-current/
+# http://mirrors.mithril.org.ua/linux/slackware/slackware-current/
+# UNITED KINGDOM (UK)
+# ftp://ftp.mirrorservice.org/sites/ftp.slackware.com/pub/slackware/slackware-current/
+# http://ftp.mirrorservice.org/sites/ftp.slackware.com/pub/slackware/slackware-current/
+# ftp://mirror.bytemark.co.uk/slackware/slackware-current/
+# http://mirror.bytemark.co.uk/slackware/slackware-current/
+# ftp://slackware.mirrors.uk2.net/pub/slackware/slackware-current/
+# http://slackware.mirrors.uk2.net/slackware-current/
+# UNITED STATES (US)
+# ftp://carroll.aset.psu.edu/pub/linux/distributions/slackware/slackware-current/
+# http://carroll.aset.psu.edu/pub/linux/distributions/slackware/slackware-current/
+# ftp://ftp.gtlib.gatech.edu/nv/ao2/lxmirror/ftp.slackware.com/slackware-current/
+# ftp://ftp.osuosl.org/.2/slackware/slackware-current/
+# http://ftp.osuosl.org/.2/slackware/slackware-current/
+# ftp://hpc-mirror.usc.edu/pub/linux/distributions/slackware/slackware-current/
+# http://hpc-mirror.usc.edu/pub/linux/distributions/slackware/slackware-current/
+# ftp://marmot.tn.utexas.edu/pub/slackware/slackware-current/
+# http://marmot.tn.utexas.edu/slackware/slackware-current/
+# ftp://mirror.cs.princeton.edu/pub/mirrors/slackware/slackware-current/
+# http://mirror.metrocast.net/slackware/slackware-current/
+# ftp://mirrors.easynews.com/linux/slackware/slackware-current/
+# http://mirrors.easynews.com/linux/slackware/slackware-current/
+# http://mirrors.kingrst.com/slackware/slackware-current/
+# ftp://mirrors.us.kernel.org/slackware/slackware-current/
+# http://mirrors.us.kernel.org/slackware/slackware-current/
+# ftp://mirrors.xmission.com/slackware/slackware-current/
+# http://mirrors.xmission.com/slackware/slackware-current/
+# http://slackbuilds.org/mirror/slackware/slackware-current/
+# http://slackware.cs.utah.edu/pub/slackware/slackware-current/
+# http://slackware.mirrorcatalogs.com/slackware-current/
+# http://slackware.mirrors.pair.com/slackware-current/
+# ftp://slackware.mirrors.tds.net/pub/slackware/slackware-current/
+# http://slackware.mirrors.tds.net/pub/slackware/slackware-current/
+# ftp://slackware.virginmedia.com/mirrors/ftp.slackware.com/slackware-current/
+# http://slackware.virginmedia.com/slackware-current/
+# ftp://spout.ussg.indiana.edu/linux/slackware/slackware-current/
+# http://spout.ussg.indiana.edu/linux/slackware/slackware-current/
+# ftp://teewurst.cc.columbia.edu/pub/linux/slackware/slackware-current/
+# http://teewurst.cc.columbia.edu/pub/linux/slackware/slackware-current/
diff --git a/source/ap/slackpkg/files/mirrors-x86_64.sample b/source/ap/slackpkg/files/mirrors-x86_64.sample
new file mode 100644
index 00000000..54041679
--- /dev/null
+++ b/source/ap/slackpkg/files/mirrors-x86_64.sample
@@ -0,0 +1,427 @@
+# mirrors - List of Slackware Linux mirrors.
+#
+# SlackPkg - An Automated packaging tool for Slackware Linux
+# Copyright (C) 2003-2011 Roberto F. Batista, Evaldo Gardenali
+#
+# This program 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 2 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# Project Page: http://slackpkg.org/
+# Roberto F. Batista (aka PiterPunk) piterpunk@slackware.com
+# Evaldo Gardenali (aka UdontKnow) evaldogardenali@fasternet.com.br
+#
+# END OF LEGAL NOTICE
+#
+#
+# You only need to select one mirror and uncomment it.
+# ONLY ONE mirror can be uncommented.
+#
+# You can use a mirror not included in this file. Many people have mirrors
+# in their local networks. A list of all official Slackware mirrors
+# (not version-specific, so some mirrors may not have all files) is here:
+# http://mirrors.slackware.com/mirrorlist/
+#
+# Slackpkg only needs to point to the directory that contains
+# "ChangeLog.txt", and don't forget the trailing slash.
+#
+#----------------------------------------------------------------
+# Local CD/DVD drive
+#----------------------------------------------------------------
+# cdrom://media/cdrom/
+#
+#----------------------------------------------------------------
+# Local Directory
+#----------------------------------------------------------------
+# file://path/to/some/directory/
+#
+#----------------------------------------------------------------
+# Slackware64-14.2
+#----------------------------------------------------------------
+# USE MIRRORS.SLACKWARE.COM (DO NOT USE FTP - ONLY HTTP FINDS A NEARBY MIRROR)
+# http://mirrors.slackware.com/slackware/slackware64-14.2/
+#
+# AUSTRALIA (AU)
+# ftp://ftp.cc.swin.edu.au/slackware/slackware64-14.2/
+# http://ftp.cc.swin.edu.au/slackware/slackware64-14.2/
+# ftp://ftp.iinet.net.au/pub/slackware/slackware64-14.2/
+# http://ftp.iinet.net.au/pub/slackware/slackware64-14.2/
+# ftp://mirror.aarnet.edu.au/pub/slackware/slackware64-14.2/
+# http://mirror.aarnet.edu.au/pub/slackware/slackware64-14.2/
+# ftp://mirror.as24220.net/pub/slackware/slackware64-14.2/
+# http://mirror.as24220.net/pub/slackware/slackware64-14.2/
+# ftp://mirror.internode.on.net/.pub2/slackware/slackware64-14.2/
+# http://mirror.internode.on.net/pub/slackware/slackware64-14.2/
+# http://mirror.primusdatacentre.com.au/slackware/slackware64-14.2/
+# AUSTRIA (AT)
+# ftp://ftp.slackware.at/slackware64-14.2/
+# http://ftp.slackware.at/data/slackware64-14.2/
+# ftp://gd.tuwien.ac.at/opsys/linux/freesoftware.com/slackware64-14.2/
+# http://gd.tuwien.ac.at/opsys/linux/freesoftware.com/slackware64-14.2/
+# BELARUS (BY)
+# ftp://mirror.datacenter.by/pub/slackware/slackware64-14.2/
+# http://mirror.datacenter.by/pub/slackware/slackware64-14.2/
+# BRAZIL (BR)
+# ftp://ftp.slackware-brasil.com.br/slackware64-14.2/
+# http://ftp.slackware-brasil.com.br/slackware64-14.2/
+# BULGARIA (BG)
+# ftp://mirrors.unixsol.org/slackware/slackware64-14.2/
+# http://mirrors.unixsol.org/slackware/slackware64-14.2/
+# CANADA (CA)
+# ftp://mirror.csclub.uwaterloo.ca/slackware/slackware64-14.2/
+# http://mirror.csclub.uwaterloo.ca/slackware/slackware64-14.2/
+# ftp://mirror.its.dal.ca/slackware/slackware64-14.2/
+# http://mirror.its.dal.ca/slackware/slackware64-14.2/
+# CHINA (CN)
+# http://mirror.bjtu.edu.cn/slackware/slackware64-14.2/
+# http://mirrors.163.com/slackware/slackware64-14.2/
+# http://mirrors.ustc.edu.cn/slackware/slackware64-14.2/
+# COSTA RICA (CR)
+# ftp://mirrors.ucr.ac.cr/slackware/pub/slackware/slackware64-14.2/
+# http://mirrors.ucr.ac.cr/slackware/pub/slackware/slackware64-14.2/
+# CZECH REPUBLIC (CZ)
+# http://ftp.slackware.cz/slackware/slackware64-14.2/
+# ftp://odysseus.linux.cz/pub/linux/slackware/slackware64-14.2/
+# http://odysseus.linux.cz/pub/linux/slackware/slackware64-14.2/
+# DENMARK (DK)
+# ftp://mirrors.dotsrc.org/.disk1/slackware/slackware64-14.2/
+# http://mirrors.dotsrc.org/.disk1/slackware/slackware64-14.2/
+# FINLAND (FI)
+# ftp://elektroni.phys.tut.fi/slackware64-14.2/
+# FRANCE (FR)
+# ftp://mirror.ovh.net/mirrors/ftp.slackware.com/slackware64-14.2/
+# http://mirror.ovh.net/mirrors/ftp.slackware.com/slackware64-14.2/
+# ftp://nephtys.lip6.fr/pub/linux/distributions/slackware/slackware64-14.2/
+# http://nephtys.lip6.fr/pub/linux/distributions/slackware/slackware64-14.2/
+# GERMANY (DE)
+# ftp://ftp.fu-berlin.de/unix/linux/slackware/slackware64-14.2/
+# ftp://ftp.gwdg.de/pub/linux/slackware/slackware64-14.2/
+# http://ftp.gwdg.de/pub/linux/slackware/slackware64-14.2/
+# ftp://ftp.tu-chemnitz.de/.SAN0/pub/linux/slackware/slackware64-14.2/
+# http://ftp.tu-chemnitz.de/pub/linux/slackware/slackware64-14.2/
+# ftp://sunsite.informatik.rwth-aachen.de/pub/comp/Linux/slackware/slackware64-14.2/
+# http://sunsite.informatik.rwth-aachen.de/ftp/pub/comp/Linux/slackware/slackware64-14.2/
+# ftp://wrz1013.rz.uni-wuerzburg.de/pub/MIRROR/slackware/slackware64-14.2/
+# http://wrz1013.rz.uni-wuerzburg.de/pub/MIRROR/slackware/slackware64-14.2/
+# GREECE (GR)
+# ftp://ftp.cc.uoc.gr/mirrors/linux/slackware/slackware64-14.2/
+# http://ftp.cc.uoc.gr/mirrors/linux/slackware/slackware64-14.2/
+# ftp://ftp.otenet.gr/pub/linux/slackware/slackware64-14.2/
+# http://ftp.otenet.gr/linux/slackware/slackware64-14.2/
+# ftp://patroklos.noc.ntua.gr/pub/linux/slackware/slackware64-14.2/
+# http://patroklos.noc.ntua.gr/pub/linux/slackware/slackware64-14.2/
+# HUNGARY (HU)
+# ftp://ftp.freepark.org/pub/linux/distributions/slackware/slackware64-14.2/
+# http://ftp.freepark.org/pub/linux/distributions/slackware/slackware64-14.2/
+# INDONESIA (ID)
+# http://kambing.ui.ac.id/slackware/slackware64-14.2/
+# http://repo.ukdw.ac.id/slackware/slackware64-14.2/
+# IRELAND (IE)
+# ftp://ftp.heanet.ie/mirrors/ftp.slackware.com/pub/slackware/slackware64-14.2/
+# http://ftp.heanet.ie/mirrors/ftp.slackware.com/pub/slackware/slackware64-14.2/
+# ITALY (IT)
+# ftp://ba.mirror.garr.it/mirrors/Slackware/slackware64-14.2/
+# http://ba.mirror.garr.it/mirrors/Slackware/slackware64-14.2/
+# JAPAN (JP)
+# ftp://ftp.nara.wide.ad.jp/pub/Linux/slackware/slackware64-14.2/
+# http://ftp.nara.wide.ad.jp/pub/Linux/slackware/slackware64-14.2/
+# ftp://ftp-srv2.kddilabs.jp/032/Linux/packages/Slackware/slackware64-14.2/
+# http://ftp-srv2.kddilabs.jp/032/Linux/packages/Slackware/slackware64-14.2/
+# ftp://riksun.riken.go.jp/Linux/slackware/slackware64-14.2/
+# http://riksun.riken.go.jp/Linux/slackware/slackware64-14.2/
+# LATVIA (LV)
+# ftp://perkons.linux.edu.lv/mirrors/ftp.slackware.com/slackware64-14.2/
+# NETHERLANDS (NL)
+# ftp://ftp.nluug.nl/vol/4/slackware/slackware64-14.2/
+# http://ftp.nluug.nl/os/Linux/distr/slackware/slackware64-14.2/
+# ftp://mirror.nl.leaseweb.net/slackware/slackware64-14.2/
+# http://mirror.nl.leaseweb.net/slackware/slackware64-14.2/
+# http://taper.alienbase.nl/mirrors/slackware/slackware64-14.2/
+# NORWAY (NO)
+# ftp://ftp1.uninett.no/slackware/slackware64-14.2/
+# http://ftp1.uninett.no/slackware/slackware64-14.2/
+# POLAND (PL)
+# ftp://ftp.man.szczecin.pl/pub/Linux/slackware/slackware64-14.2/
+# ftp://ftp.pwr.wroc.pl/pub/linux/slackware/slackware64-14.2/
+# http://ftp.pwr.wroc.pl/pub/linux/slackware/slackware64-14.2/
+# ftp://ftp.slackware.pl/pub/slackware/slackware64-14.2/
+# http://ftp.slackware.pl/pub/slackware/slackware64-14.2/
+# ftp://gepard.pbone.net/mirror/ftp.slackware.com/slackware64-14.2/
+# ftp://piotrkosoft.net/pub/mirrors/ftp.slackware.com/pub/slackware/slackware64-14.2/
+# http://piotrkosoft.net/pub/mirrors/ftp.slackware.com/pub/slackware/slackware64-14.2/
+# ftp://sunsite.icm.edu.pl/vol/rzm1/linux-slackware/slackware64-14.2/
+# http://sunsite.icm.edu.pl/packages/linux-slackware/slackware64-14.2/
+# ftp://z-ftp.wcss.wroc.pl/pub/linux/slackware/slackware64-14.2/
+# http://z-ftp.wcss.wroc.pl/pub/linux/slackware/slackware64-14.2/
+# PORTUGAL (PT)
+# ftp://darkstar.ist.utl.pt/pub/slackware/slackware64-14.2/
+# http://darkstar.ist.utl.pt/pub/slackware/slackware64-14.2/
+# RUSSIA (RU)
+# http://mirror.rol.ru/slackware/slackware64-14.2/
+# ftp://mirror.yandex.ru/slackware/slackware64-14.2/
+# http://mirror.yandex.ru/slackware/slackware64-14.2/
+# SERBIA (RS)
+# ftp://mirror2.etf.bg.ac.rs/slackware/slackware64-14.2/
+# http://mirror2.etf.bg.ac.rs/slackware/slackware64-14.2/
+# SOUTH AFRICA (ZA)
+# ftp://ftp.is.co.za/mirror/ftp.slackware.com/pub/slackware64-14.2/
+# http://ftp.is.co.za/mirror/ftp.slackware.com/pub/slackware64-14.2/
+# ftp://ftp.wa.co.za/pub/slackware/slackware64-14.2/
+# http://ftp.wa.co.za/pub/slackware/slackware64-14.2/
+# ftp://slackware.mirror.ac.za/slackware64-14.2/
+# http://slackware.mirror.ac.za/slackware64-14.2/
+# SWEDEN (SE)
+# ftp://ftp.df.lth.se/pub/slackware/slackware64-14.2/
+# http://ftp.df.lth.se/pub/slackware/slackware64-14.2/
+# ftp://ftp.sunet.se/pub/os/Linux/distributions/slackware/slackware64-14.2/
+# http://ftp.sunet.se/pub/os/Linux/distributions/slackware/slackware64-14.2/
+# SWITZERLAND (CH)
+# ftp://mirror.switch.ch/mirror/slackware/slackware64-14.2/
+# http://mirror.switch.ch/ftp/mirror/slackware/slackware64-14.2/
+# TAIWAN (TW)
+# ftp://ftp.isu.edu.tw/pub/Linux/Slackware/slackware64-14.2/
+# http://ftp.isu.edu.tw/pub/Linux/Slackware/slackware64-14.2/
+# ftp://ftp.twaren.net/pub/Linux/Slackware/slackware64-14.2/
+# http://ftp.twaren.net/Linux/Slackware/slackware64-14.2/
+# TURKEY (TR)
+# ftp://ftp.linux.org.tr/slackware/slackware64-14.2/
+# http://ftp.linux.org.tr/slackware/slackware64-14.2/
+# UKRAINE (UA)
+# ftp://mirrors.mithril.org.ua/linux/slackware/slackware64-14.2/
+# http://mirrors.mithril.org.ua/linux/slackware/slackware64-14.2/
+# UNITED KINGDOM (UK)
+# ftp://ftp.mirrorservice.org/sites/ftp.slackware.com/pub/slackware/slackware64-14.2/
+# http://ftp.mirrorservice.org/sites/ftp.slackware.com/pub/slackware/slackware64-14.2/
+# ftp://mirror.bytemark.co.uk/slackware/slackware64-14.2/
+# http://mirror.bytemark.co.uk/slackware/slackware64-14.2/
+# UNITED STATES (US)
+# ftp://carroll.aset.psu.edu/pub/linux/distributions/slackware/slackware64-14.2/
+# http://carroll.aset.psu.edu/pub/linux/distributions/slackware/slackware64-14.2/
+# ftp://ftp.gtlib.gatech.edu/nv/ao2/lxmirror/ftp.slackware.com/slackware64-14.2/
+# ftp://ftp.osuosl.org/.2/slackware/slackware64-14.2/
+# http://ftp.osuosl.org/.2/slackware/slackware64-14.2/
+# ftp://hpc-mirror.usc.edu/pub/linux/distributions/slackware/slackware64-14.2/
+# http://hpc-mirror.usc.edu/pub/linux/distributions/slackware/slackware64-14.2/
+# ftp://marmot.tn.utexas.edu/pub/slackware/slackware64-14.2/
+# http://marmot.tn.utexas.edu/slackware/slackware64-14.2/
+# ftp://mirror.cs.princeton.edu/pub/mirrors/slackware/slackware64-14.2/
+# http://mirror.metrocast.net/slackware/slackware64-14.2/
+# ftp://mirrors.easynews.com/linux/slackware/slackware64-14.2/
+# http://mirrors.easynews.com/linux/slackware/slackware64-14.2/
+# http://mirrors.kingrst.com/slackware/slackware64-14.2/
+# ftp://mirrors.us.kernel.org/slackware/slackware64-14.2/
+# http://mirrors.us.kernel.org/slackware/slackware64-14.2/
+# ftp://mirrors.xmission.com/slackware/slackware64-14.2/
+# http://mirrors.xmission.com/slackware/slackware64-14.2/
+# http://slackbuilds.org/mirror/slackware/slackware64-14.2/
+# http://slackware.cs.utah.edu/pub/slackware/slackware64-14.2/
+# http://slackware.mirrorcatalogs.com/slackware64-14.2/
+# http://slackware.mirrors.pair.com/slackware64-14.2/
+# ftp://slackware.mirrors.tds.net/pub/slackware/slackware64-14.2/
+# http://slackware.mirrors.tds.net/pub/slackware/slackware64-14.2/
+# ftp://slackware.virginmedia.com/mirrors/ftp.slackware.com/slackware64-14.2/
+# http://slackware.virginmedia.com/slackware64-14.2/
+# ftp://spout.ussg.indiana.edu/linux/slackware/slackware64-14.2/
+# http://spout.ussg.indiana.edu/linux/slackware/slackware64-14.2/
+# ftp://teewurst.cc.columbia.edu/pub/linux/slackware/slackware64-14.2/
+# http://teewurst.cc.columbia.edu/pub/linux/slackware/slackware64-14.2/
+#
+#----------------------------------------------------------------
+# Slackware64-current
+#----------------------------------------------------------------
+# USE MIRRORS.SLACKWARE.COM (DO NOT USE FTP - ONLY HTTP FINDS A NEARBY MIRROR)
+# http://mirrors.slackware.com/slackware/slackware64-current/
+#
+# AUSTRALIA (AU)
+# ftp://ftp.cc.swin.edu.au/slackware/slackware64-current/
+# http://ftp.cc.swin.edu.au/slackware/slackware64-current/
+# ftp://ftp.iinet.net.au/pub/slackware/slackware64-current/
+# http://ftp.iinet.net.au/pub/slackware/slackware64-current/
+# ftp://mirror.aarnet.edu.au/pub/slackware/slackware64-current/
+# http://mirror.aarnet.edu.au/pub/slackware/slackware64-current/
+# ftp://mirror.as24220.net/pub/slackware/slackware64-current/
+# http://mirror.as24220.net/pub/slackware/slackware64-current/
+# ftp://mirror.internode.on.net/.pub2/slackware/slackware64-current/
+# http://mirror.internode.on.net/pub/slackware/slackware64-current/
+# http://mirror.primusdatacentre.com.au/slackware/slackware64-current/
+# AUSTRIA (AT)
+# ftp://ftp.slackware.at/slackware64-current/
+# http://ftp.slackware.at/data/slackware64-current/
+# ftp://gd.tuwien.ac.at/opsys/linux/freesoftware.com/slackware64-current/
+# http://gd.tuwien.ac.at/opsys/linux/freesoftware.com/slackware64-current/
+# BELARUS (BY)
+# ftp://mirror.datacenter.by/pub/slackware/slackware64-current/
+# http://mirror.datacenter.by/pub/slackware/slackware64-current/
+# BRAZIL (BR)
+# ftp://ftp.slackware-brasil.com.br/slackware64-current/
+# http://ftp.slackware-brasil.com.br/slackware64-current/
+# BULGARIA (BG)
+# ftp://mirrors.unixsol.org/slackware/slackware64-current/
+# http://mirrors.unixsol.org/slackware/slackware64-current/
+# CANADA (CA)
+# ftp://mirror.csclub.uwaterloo.ca/slackware/slackware64-current/
+# http://mirror.csclub.uwaterloo.ca/slackware/slackware64-current/
+# ftp://mirror.its.dal.ca/slackware/slackware64-current/
+# http://mirror.its.dal.ca/slackware/slackware64-current/
+# CHINA (CN)
+# http://mirror.bjtu.edu.cn/slackware/slackware64-current/
+# http://mirrors.163.com/slackware/slackware64-current/
+# http://mirrors.ustc.edu.cn/slackware/slackware64-current/
+# COSTA RICA (CR)
+# ftp://mirrors.ucr.ac.cr/slackware/pub/slackware/slackware64-current/
+# http://mirrors.ucr.ac.cr/slackware/pub/slackware/slackware64-current/
+# CZECH REPUBLIC (CZ)
+# ftp://odysseus.linux.cz/pub/linux/slackware/slackware64-current/
+# http://odysseus.linux.cz/pub/linux/slackware/slackware64-current/
+# DENMARK (DK)
+# ftp://mirrors.dotsrc.org/.disk1/slackware/slackware64-current/
+# http://mirrors.dotsrc.org/.disk1/slackware/slackware64-current/
+# FINLAND (FI)
+# ftp://elektroni.phys.tut.fi/slackware64-current/
+# FRANCE (FR)
+# ftp://mirror.ovh.net/mirrors/ftp.slackware.com/slackware64-current/
+# http://mirror.ovh.net/mirrors/ftp.slackware.com/slackware64-current/
+# ftp://nephtys.lip6.fr/pub/linux/distributions/slackware/slackware64-current/
+# http://nephtys.lip6.fr/pub/linux/distributions/slackware/slackware64-current/
+# GERMANY (DE)
+# ftp://ftp.fu-berlin.de/unix/linux/slackware/slackware64-current/
+# ftp://ftp.gwdg.de/pub/linux/slackware/slackware64-current/
+# http://ftp.gwdg.de/pub/linux/slackware/slackware64-current/
+# ftp://ftp.tu-chemnitz.de/.SAN0/pub/linux/slackware/slackware64-current/
+# http://ftp.tu-chemnitz.de/pub/linux/slackware/slackware64-current/
+# ftp://sunsite.informatik.rwth-aachen.de/pub/comp/Linux/slackware/slackware64-current/
+# http://sunsite.informatik.rwth-aachen.de/ftp/pub/comp/Linux/slackware/slackware64-current/
+# ftp://wrz1013.rz.uni-wuerzburg.de/pub/MIRROR/slackware/slackware64-current/
+# http://wrz1013.rz.uni-wuerzburg.de/pub/MIRROR/slackware/slackware64-current/
+# GREECE (GR)
+# ftp://ftp.cc.uoc.gr/mirrors/linux/slackware/slackware64-current/
+# http://ftp.cc.uoc.gr/mirrors/linux/slackware/slackware64-current/
+# ftp://ftp.otenet.gr/pub/linux/slackware/slackware64-current/
+# http://ftp.otenet.gr/linux/slackware/slackware64-current/
+# ftp://patroklos.noc.ntua.gr/pub/linux/slackware/slackware64-current/
+# http://patroklos.noc.ntua.gr/pub/linux/slackware/slackware64-current/
+# HUNGARY (HU)
+# ftp://ftp.freepark.org/pub/linux/distributions/slackware/slackware64-current/
+# http://ftp.freepark.org/pub/linux/distributions/slackware/slackware64-current/
+# INDONESIA (ID)
+# http://kambing.ui.ac.id/slackware/slackware64-current/
+# http://repo.ukdw.ac.id/slackware/slackware64-current/
+# IRELAND (IE)
+# ftp://ftp.heanet.ie/mirrors/ftp.slackware.com/pub/slackware/slackware64-current/
+# http://ftp.heanet.ie/mirrors/ftp.slackware.com/pub/slackware/slackware64-current/
+# ITALY (IT)
+# ftp://ba.mirror.garr.it/mirrors/Slackware/slackware64-current/
+# http://ba.mirror.garr.it/mirrors/Slackware/slackware64-current/
+# JAPAN (JP)
+# ftp://ftp.nara.wide.ad.jp/pub/Linux/slackware/slackware64-current/
+# http://ftp.nara.wide.ad.jp/pub/Linux/slackware/slackware64-current/
+# ftp://ftp-srv2.kddilabs.jp/032/Linux/packages/Slackware/slackware64-current/
+# http://ftp-srv2.kddilabs.jp/032/Linux/packages/Slackware/slackware64-current/
+# ftp://riksun.riken.go.jp/Linux/slackware/slackware64-current/
+# http://riksun.riken.go.jp/Linux/slackware/slackware64-current/
+# LATVIA (LV)
+# ftp://perkons.linux.edu.lv/mirrors/ftp.slackware.com/slackware64-current/
+# NETHERLANDS (NL)
+# ftp://ftp.nluug.nl/vol/4/slackware/slackware64-current/
+# http://ftp.nluug.nl/os/Linux/distr/slackware/slackware64-current/
+# ftp://mirror.nl.leaseweb.net/slackware/slackware64-current/
+# http://mirror.nl.leaseweb.net/slackware/slackware64-current/
+# http://taper.alienbase.nl/mirrors/slackware/slackware64-current/
+# NORWAY (NO)
+# ftp://ftp1.uninett.no/slackware/slackware64-current/
+# http://ftp1.uninett.no/slackware/slackware64-current/
+# POLAND (PL)
+# ftp://ftp.man.szczecin.pl/pub/Linux/slackware/slackware64-current/
+# ftp://ftp.pwr.wroc.pl/pub/linux/slackware/slackware64-current/
+# http://ftp.pwr.wroc.pl/pub/linux/slackware/slackware64-current/
+# ftp://ftp.slackware.pl/pub/slackware/slackware64-current/
+# http://ftp.slackware.pl/pub/slackware/slackware64-current/
+# ftp://gepard.pbone.net/mirror/ftp.slackware.com/slackware64-current/
+# ftp://piotrkosoft.net/pub/mirrors/ftp.slackware.com/pub/slackware/slackware64-current/
+# http://piotrkosoft.net/pub/mirrors/ftp.slackware.com/pub/slackware/slackware64-current/
+# ftp://sunsite.icm.edu.pl/vol/rzm1/linux-slackware/slackware64-current/
+# http://sunsite.icm.edu.pl/packages/linux-slackware/slackware64-current/
+# ftp://z-ftp.wcss.wroc.pl/pub/linux/slackware/slackware64-current/
+# http://z-ftp.wcss.wroc.pl/pub/linux/slackware/slackware64-current/
+# PORTUGAL (PT)
+# ftp://darkstar.ist.utl.pt/pub/slackware/slackware64-current/
+# http://darkstar.ist.utl.pt/pub/slackware/slackware64-current/
+# RUSSIA (RU)
+# http://mirror.rol.ru/slackware/slackware64-current/
+# ftp://mirror.yandex.ru/slackware/slackware64-current/
+# http://mirror.yandex.ru/slackware/slackware64-current/
+# SERBIA (RS)
+# ftp://mirror2.etf.bg.ac.rs/slackware/slackware64-current/
+# http://mirror2.etf.bg.ac.rs/slackware/slackware64-current/
+# SOUTH AFRICA (ZA)
+# ftp://ftp.is.co.za/mirror/ftp.slackware.com/pub/slackware64-current/
+# http://ftp.is.co.za/mirror/ftp.slackware.com/pub/slackware64-current/
+# ftp://ftp.wa.co.za/pub/slackware/slackware64-current/
+# http://ftp.wa.co.za/pub/slackware/slackware64-current/
+# ftp://slackware.mirror.ac.za/slackware64-current/
+# http://slackware.mirror.ac.za/slackware64-current/
+# SWEDEN (SE)
+# ftp://ftp.df.lth.se/pub/slackware/slackware64-current/
+# http://ftp.df.lth.se/pub/slackware/slackware64-current/
+# ftp://ftp.sunet.se/pub/os/Linux/distributions/slackware/slackware64-current/
+# http://ftp.sunet.se/pub/os/Linux/distributions/slackware/slackware64-current/
+# SWITZERLAND (CH)
+# ftp://mirror.switch.ch/mirror/slackware/slackware64-current/
+# http://mirror.switch.ch/ftp/mirror/slackware/slackware64-current/
+# TAIWAN (TW)
+# ftp://ftp.isu.edu.tw/pub/Linux/Slackware/slackware64-current/
+# http://ftp.isu.edu.tw/pub/Linux/Slackware/slackware64-current/
+# ftp://ftp.twaren.net/pub/Linux/Slackware/slackware64-current/
+# http://ftp.twaren.net/Linux/Slackware/slackware64-current/
+# TURKEY (TR)
+# ftp://ftp.linux.org.tr/slackware/slackware64-current/
+# http://ftp.linux.org.tr/slackware/slackware64-current/
+# UKRAINE (UA)
+# ftp://mirrors.mithril.org.ua/linux/slackware/slackware64-current/
+# http://mirrors.mithril.org.ua/linux/slackware/slackware64-current/
+# UNITED KINGDOM (UK)
+# ftp://ftp.mirrorservice.org/sites/ftp.slackware.com/pub/slackware/slackware64-current/
+# http://ftp.mirrorservice.org/sites/ftp.slackware.com/pub/slackware/slackware64-current/
+# ftp://mirror.bytemark.co.uk/slackware/slackware64-current/
+# http://mirror.bytemark.co.uk/slackware/slackware64-current/
+# UNITED STATES (US)
+# ftp://carroll.aset.psu.edu/pub/linux/distributions/slackware/slackware64-current/
+# http://carroll.aset.psu.edu/pub/linux/distributions/slackware/slackware64-current/
+# ftp://ftp.gtlib.gatech.edu/nv/ao2/lxmirror/ftp.slackware.com/slackware64-current/
+# ftp://ftp.osuosl.org/.2/slackware/slackware64-current/
+# http://ftp.osuosl.org/.2/slackware/slackware64-current/
+# ftp://hpc-mirror.usc.edu/pub/linux/distributions/slackware/slackware64-current/
+# http://hpc-mirror.usc.edu/pub/linux/distributions/slackware/slackware64-current/
+# ftp://marmot.tn.utexas.edu/pub/slackware/slackware64-current/
+# http://marmot.tn.utexas.edu/slackware/slackware64-current/
+# ftp://mirror.cs.princeton.edu/pub/mirrors/slackware/slackware64-current/
+# http://mirror.metrocast.net/slackware/slackware64-current/
+# ftp://mirrors.easynews.com/linux/slackware/slackware64-current/
+# http://mirrors.easynews.com/linux/slackware/slackware64-current/
+# http://mirrors.kingrst.com/slackware/slackware64-current/
+# ftp://mirrors.us.kernel.org/slackware/slackware64-current/
+# http://mirrors.us.kernel.org/slackware/slackware64-current/
+# ftp://mirrors.xmission.com/slackware/slackware64-current/
+# http://mirrors.xmission.com/slackware/slackware64-current/
+# http://slackbuilds.org/mirror/slackware/slackware64-current/
+# http://slackware.cs.utah.edu/pub/slackware/slackware64-current/
+# http://slackware.mirrorcatalogs.com/slackware64-current/
+# http://slackware.mirrors.pair.com/slackware64-current/
+# ftp://slackware.mirrors.tds.net/pub/slackware/slackware64-current/
+# http://slackware.mirrors.tds.net/pub/slackware/slackware64-current/
+# ftp://slackware.virginmedia.com/mirrors/ftp.slackware.com/slackware64-current/
+# http://slackware.virginmedia.com/slackware64-current/
+# ftp://spout.ussg.indiana.edu/linux/slackware/slackware64-current/
+# http://spout.ussg.indiana.edu/linux/slackware/slackware64-current/
+# ftp://teewurst.cc.columbia.edu/pub/linux/slackware/slackware64-current/
+# http://teewurst.cc.columbia.edu/pub/linux/slackware/slackware64-current/
diff --git a/source/ap/slackpkg/files/pkglist.awk b/source/ap/slackpkg/files/pkglist.awk
new file mode 100644
index 00000000..5a0c18e8
--- /dev/null
+++ b/source/ap/slackpkg/files/pkglist.awk
@@ -0,0 +1,35 @@
+!/source\// && !/\.asc$/ {
+ INPUT=$NF
+ fs=FS
+ FS="/" ; OFS="/"
+ $0=INPUT
+ if ( $2 != "var" ) {
+ DIR=$2
+ FULLPACK=$NF
+ } else {
+ DIR="local"
+ FULLPACK=$NF".tgz"
+ }
+ NF=NF-1
+ PATH=$0
+ FS="-" ; OFS="-"
+ $0=FULLPACK
+ if ( NF > 3 ) {
+ SIZE=split($NF,RELEXT,".")
+ EXTENSION=RELEXT[SIZE]
+ LAST=length($NF)-4
+ RELEASE=substr($NF,1,LAST)
+ ARCH=$(NF-1)
+ VERSION=$(NF-2)
+ NF=NF-3
+ NAME=$0
+ } else {
+ RELEASE=none
+ ARCH=none
+ VERSION=none
+ EXTENSION=tgz
+ NAME=$0
+ }
+ FS=fs
+ print DIR" "NAME" "VERSION" "ARCH" "RELEASE" "NAME"-"VERSION"-"ARCH"-"RELEASE" "PATH" "EXTENSION
+}
diff --git a/source/ap/slackpkg/files/post-functions.sh b/source/ap/slackpkg/files/post-functions.sh
new file mode 100644
index 00000000..2eb023bc
--- /dev/null
+++ b/source/ap/slackpkg/files/post-functions.sh
@@ -0,0 +1,221 @@
+showdiff() {
+ BASENAME=$(basename $i .new)
+ FILEPATH=$(dirname $i)
+ FULLNAME="${FILEPATH}/${BASENAME}"
+
+ if [ -e ${FULLNAME} ]; then
+ diff -u ${FULLNAME} ${FULLNAME}.new | $MORECMD
+ else
+ echo "file $FULLNAME doesn't exist"
+ fi
+}
+
+showmenu() {
+ echo -e "$1 - \c"
+ tput sc
+ shift
+ while [ $# -gt 0 ]; do
+ echo -e "$1"
+ tput rc
+ shift
+ done
+}
+
+mergenew() {
+ BASENAME=$(basename $i .new)
+ FILEPATH=$(dirname $i)
+ FULLNAME="${FILEPATH}/${BASENAME}"
+
+ if [ -e "${FULLNAME}" ]; then
+ # in media res. we do the merging right away, but we later allow the user to redo it, if not satisfied with the results.
+ rm -f "${FULLNAME}.smerge"
+ echo "Enter '?' in the prompt (%) to display help."
+ cp -p "${FULLNAME}.new" "${FULLNAME}.smerge" # <- this is so that the installed merged file will have the same permissions as the .new file
+ sdiff -s -o "${FULLNAME}.smerge" "${FULLNAME}" "${FULLNAME}.new"
+
+ GOEXM=0
+ while [ $GOEXM -eq 0 ]; do
+ showmenu $i "(E)dit the merged file" "(I)nstall the merged file" "View a diff between the merged and the (N)ew file" "View a diff between the (O)ld and the merged file" "(R)edo the merge" "(V)iew the merged file" "(B)ack to previous menu, and delete the merged file"
+ read ANSWER
+ case "$ANSWER" in
+ E|e)
+ if [ -f "${FULLNAME}.smerge" ]; then
+ $EDITCMD "${FULLNAME}.smerge"
+ else
+ echo -e "Nothing was merged yet..."
+ fi
+ ;;
+ I|i)
+ if [ -f "${FULLNAME}.smerge" ]; then
+ if [ -e "${FULLNAME}" ]; then
+ mv "${FULLNAME}" "${FULLNAME}.orig"
+ fi
+ mv "${FULLNAME}.smerge" "${FULLNAME}"
+ rm -f "${FULLNAME}.new"
+ GOEXM=1
+ GOEX=1
+ else
+ echo -e "Nothing was merged yet..."
+ fi
+ ;;
+ N|n)
+ if [ -f "${FULLNAME}.smerge" ]; then
+ diff -u "${FULLNAME}.smerge" "${FULLNAME}.new" | $MORECMD
+ else
+ echo -e "Nothing was merged yet..."
+ fi
+ ;;
+ O|o)
+ if [ -f "${FULLNAME}.smerge" ]; then
+ diff -u "${FULLNAME}" "${FULLNAME}.smerge" | $MORECMD
+ else
+ echo -e "Nothing was merged yet..."
+ fi
+ ;;
+ R|r)
+ rm -f "${FULLNAME}.smerge"
+ echo "Enter '?' in the prompt (%) to display help."
+ cp -p "${FULLNAME}.new" "${FULLNAME}.smerge" # <- this is so that the installed merged file will have the same permissions as the .new file
+ sdiff -s -o "${FULLNAME}.smerge" "${FULLNAME}" "${FULLNAME}.new"
+ ;;
+ V|v)
+ if [ -f "${FULLNAME}.smerge" ]; then
+ $MORECMD "${FULLNAME}.smerge"
+ else
+ echo -e "Nothing was merged yet..."
+ fi
+ ;;
+ B|b)
+ rm -f "${FULLNAME}.smerge"
+ GOEXM=1
+ ;;
+ esac
+ done
+ else
+ echo "file $FULLNAME doesn't exist"
+ fi
+}
+
+overold() {
+ BASENAME=$(basename $i .new)
+ FILEPATH=$(dirname $i)
+ FULLNAME="${FILEPATH}/${BASENAME}"
+
+ if [ -e ${FULLNAME} ]; then
+ mv ${FULLNAME} ${FULLNAME}.orig
+ fi
+ mv ${FULLNAME}.new ${FULLNAME}
+}
+
+removeold() {
+ rm $i
+}
+
+looknew() {
+
+ # with ONLY_NEW_DOTNEW set, slackpkg will search only for
+ # .new files installed in actual slackpkg's execution
+ if [ "$ONLY_NEW_DOTNEW" = "on" ]; then
+ ONLY_NEW_DOTNEW="-cnewer $TMPDIR/timestamp"
+ else
+ ONLY_NEW_DOTNEW=""
+ fi
+
+ echo -e "\nSearching for NEW configuration files"
+ FILES=$(find /etc -name "*.new" ${ONLY_NEW_DOTNEW} \
+ -not -name "rc.inet1.conf.new" \
+ -not -name "group.new" \
+ -not -name "passwd.new" \
+ -not -name "shadow.new" \
+ -not -name "gshadow.new" 2>/dev/null)
+ if [ "$FILES" != "" ]; then
+ echo -e "\n\
+Some packages had new configuration files installed.
+You have four choices:
+
+ (K)eep the old files and consider .new files later
+
+ (O)verwrite all old files with the new ones. The
+ old files will be stored with the suffix .orig
+
+ (R)emove all .new files
+
+ (P)rompt K, O, R selection for every single file
+
+What do you want (K/O/R/P)?"
+ answer
+ case $ANSWER in
+ K|k)
+ break
+ ;;
+ O|o)
+ for i in $FILES; do
+ overold $i
+ done
+ break
+ ;;
+ R|r)
+ for i in $FILES; do
+ removeold $i
+ done
+ break
+ ;;
+ P|p)
+ echo "Select what you want file-by-file"
+ for i in $FILES; do
+ GOEX=0
+ while [ $GOEX -eq 0 ]; do
+ echo
+ showmenu $i "(K)eep" "(O)verwrite" "(R)emove" "(D)iff" "(M)erge"
+ read ANSWER
+ case $ANSWER in
+ O|o)
+ overold $i
+ GOEX=1
+ ;;
+ R|r)
+ removeold $i
+ GOEX=1
+ ;;
+ D|d)
+ showdiff $1
+ ;;
+ M|m)
+ mergenew $1
+ ;;
+ K|k|*)
+ GOEX=1
+ ;;
+ esac
+ done
+ done
+ break
+ ;;
+ *)
+ echo "OK! Your choice is nothing! slackpkg will Keep the old files for you to deal with later"
+ ;;
+ esac
+ else
+ echo -e "\t\tNo .new files found."
+ fi
+}
+
+lookkernel() {
+ NEWKERNELMD5=$(md5sum /boot/vmlinuz 2>/dev/null)
+ if [ "$KERNELMD5" != "$NEWKERNELMD5" ]; then
+ if [ -x /sbin/lilo ]; then
+ echo -e "\n
+Your kernel image was updated. We highly recommend you run: lilo
+Do you want slackpkg to run lilo now? (Y/n)"
+ answer
+ if [ "$ANSWER" != "n" ] && [ "$ANSWER" != "N" ]; then
+ /sbin/lilo
+ fi
+ else
+ echo -e "\n
+Your kernel image was updated and lilo is not found on your system.
+You may need to adjust your boot manager(like GRUB) to boot appropriate
+kernel."
+ fi
+ fi
+}
diff --git a/source/ap/slackpkg/files/slackpkg b/source/ap/slackpkg/files/slackpkg
new file mode 100644
index 00000000..9c45c865
--- /dev/null
+++ b/source/ap/slackpkg/files/slackpkg
@@ -0,0 +1,574 @@
+#!/bin/sh
+#
+# SlackPkg - An Automated packaging tool for Slackware Linux
+# Copyright (C) 2003-2011 Roberto F. Batista, Evaldo Gardenali
+#
+# This program 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 2 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# Project Page: http://slackpkg.org/
+# Roberto F. Batista (aka PiterPunk) piterpunk@slackware.com
+# Evaldo Gardenali (aka UdontKnow) evaldogardenali@fasternet.com.br
+#
+
+
+#========================================================================
+#
+# LOAD CONFIGURATIONS
+#
+
+#
+# CONF = configuration directory
+# SOURCE = A mirror of Slackware. Source can be sett by editing $CONF/mirrors
+#
+VERSION=@VERSION@
+PATH=/bin:/usr/bin:/sbin:/usr/sbin
+SLACKWARE_VERSION=$(cat /etc/slackware-version | cut -f2 -d\ )
+CONF=${CONF:-/etc/slackpkg}
+SOURCE=$(sed -e 's/^[[:blank:]]*//' $CONF/mirrors | grep -m1 -e "^\([a-z]\)")
+. $CONF/slackpkg.conf
+ERROR=""
+
+# Set temporary directory
+#
+TMPDIR=$(mktemp -p /tmp -d slackpkg.XXXXXX 2>/dev/null)
+if [ $? -ne 0 ]; then
+ TMPDIR="/tmp/slackpkg.${RANDOM}"
+ mkdir -m 700 $TMPDIR || TMPDIR="FAILED"
+fi
+
+#
+# Load the slackpkg functions
+#
+. /usr/libexec/slackpkg/core-functions.sh
+
+#========================================================================
+#
+# COMMAND LINE PARSING
+#
+if [ $# -eq 0 ]; then
+ usage
+fi
+
+while [ -n "$1" ] ; do
+ case $1 in
+ -delall=on)
+ DELALL=on
+ shift
+ ;;
+ -delall=off)
+ DELALL=off
+ shift
+ ;;
+ -checkmd5=on)
+ CHECKMD5=on
+ shift
+ ;;
+ -checkmd5=off)
+ CHECKMD5=off
+ shift
+ ;;
+ -checkgpg=on)
+ CHECKGPG=on
+ shift
+ ;;
+ -checkgpg=off)
+ CHECKGPG=off
+ shift
+ ;;
+ -checksize=on)
+ CHECKSIZE=on
+ shift
+ ;;
+ -checksize=off)
+ CHECKSIZE=off
+ shift
+ ;;
+ -postinst=on)
+ POSTINST=on
+ shift
+ ;;
+ -postinst=off)
+ POSTINST=off
+ shift
+ ;;
+ -onoff=on)
+ ONOFF=on
+ shift
+ ;;
+ -onoff=off)
+ ONOFF=off
+ shift
+ ;;
+ -download_all=on)
+ DOWNLOAD_ALL=on
+ shift
+ ;;
+ -download_all=off)
+ DOWNLOAD_ALL=off
+ shift
+ ;;
+ -dialog=on)
+ DIALOG=on
+ shift
+ ;;
+ -dialog=off)
+ DIALOG=off
+ shift
+ ;;
+ -dialog_maxargs=*)
+ DIALOG_MAXARGS=$(echo $1 | cut -f2 -d=)
+ shift
+ ;;
+ -batch=on)
+ BATCH=on
+ shift
+ ;;
+ -batch=off)
+ BATCH=off
+ shift
+ ;;
+ -only_new_dotnew=on)
+ ONLY_NEW_DOTNEW=on
+ shift
+ ;;
+ -only_new_dotnew=off)
+ ONLY_NEW_DOTNEW=off
+ shift
+ ;;
+ -use_includes=on)
+ USE_INCLUDES=on
+ shift
+ ;;
+ -use_includes=off)
+ USE_INCLUDES=off
+ shift
+ ;;
+ -spinning=on)
+ SPINNING=on
+ shift
+ ;;
+ -spinning=off)
+ SPINNING=off
+ shift
+ ;;
+ -default_answer=y|-default_answer=yes)
+ DEFAULT_ANSWER=y
+ shift
+ ;;
+ -default_answer=n|-default_answer=no)
+ DEFAULT_ANSWER=n
+ shift
+ ;;
+ -mirror=*)
+ SOURCE=$(echo $1 | cut -f2 -d=)
+ shift
+ ;;
+ install|reinstall|upgrade|remove|blacklist|download)
+ CMD=$1
+ shift
+ if [ -n "$1" ]; then
+ if echo $1 | egrep -q "^\.{0,2}/" ; then
+ if [ -e $1 ]; then
+ INPUTLIST=$(cat $1 | tr "\n" " ")
+ else
+ echo -e "The file $1 doesn't exist.\n"
+ cleanup
+ fi
+ else
+ #
+ # Sanitize the argument. We have some problems with dots
+ # and plus (.+)
+ #
+ #INPUTLIST="$(echo $@ | sed -e 's/\+/\\\+/g' -e 's/\./\\\./g')"
+ INPUTLIST="$@"
+ fi
+ elif [ "$CMD" != "blacklist" ]; then
+ usage
+ fi
+ shift $#
+ ;;
+ update)
+ CMD=$1
+ shift
+ if [ "$1" = "gpg" ]; then
+ UPARG="$1"
+ shift
+ fi
+ ;;
+ install-new|upgrade-all|clean-system|new-config|check-updates|help)
+ CMD=$1
+ shift
+ if [ -n "$1" ]; then
+ echo -e "\n$CMD: Ignoring extra arguments: $@" >&2 >&1
+ shift $#
+ fi
+ ;;
+ generate-template|install-template|remove-template|search|file-search|info)
+ CMD=$1
+ shift
+ if [ -n "$1" ]; then
+ ARG=$1
+ shift
+ else
+ usage
+ fi
+
+ if [ -n "$1" ]; then
+ echo -e "\n$CMD: Ignoring extra arguments: $@" >&2 >&1
+ shift $#
+ fi
+ ;;
+ *)
+ echo -e "\n$1: Unknown option.\n"
+ usage
+ ;;
+ esac
+done
+
+#========================================================================
+#
+# SYSTEM SETUP
+#
+system_setup
+
+#========================================================================
+#
+# SYNTAX CHECKING
+#
+system_checkup
+
+#========================================================================
+#
+# READ EXTRA FUNCTIONS
+#
+
+# If you want a new function or need a rewrite of an existing
+# feature, you can put your new function in a shell script under
+# /usr/libexec/slackpkg/functions.d/
+#
+# Remember - the new function scripts need to be executable
+#
+for i in /usr/libexec/slackpkg/functions.d/*.sh; do
+ if [ -x $i ]; then
+ . $i
+ fi
+done
+
+#========================================================================
+#
+# MAIN PROGRAM
+#
+
+#
+# A *BIG* case with all slackpkg commands -:)
+#
+case "$CMD" in
+ help)
+ full_usage
+ ;;
+ check-updates)
+ if checkchangelog 1>/dev/null 2>/dev/null ; then
+ echo "No news is good news"
+ else
+ echo "News on ChangeLog.txt"
+ fi
+ ;;
+ update)
+ # If you are using "slackpkg update gpg" OR the system
+ # doesn't have Slackware GPG key, download and install
+ # the key
+ #
+ if [ "$UPARG" = "gpg" ] || [ "$GPGFIRSTTIME" = "0" ]; then
+ #
+ # Creates .gnupg directory if doesn't exist
+ # without this dir, gpg got an error.
+ #
+ if ! [ -e ~/.gnupg ]; then
+ mkdir ~/.gnupg
+ fi
+ getfile ${SOURCE}GPG-KEY $TMPDIR/gpgkey
+ gpg --yes --batch --delete-key "$SLACKKEY" &>/dev/null
+ gpg --import $TMPDIR/gpgkey &>/dev/null && \
+ echo -e "\t\t\tSlackware Linux Project's GPG key added"
+ if [ "$UPARG" = "gpg" ]; then
+ cleanup
+ fi
+ fi
+ echo "Updating the package lists..."
+ updatefilelists
+ ;;
+ install)
+ makelist $INPUTLIST
+ if [ -n "$LIST" ]; then
+ showlist "$LIST" $CMD
+ install_pkg
+ else
+ echo -e "No packages match the pattern for install. Try:"
+ echo -e "\n\t$0 reinstall|upgrade $2\n"
+ POSTINST=off
+ fi
+ ;;
+ reinstall)
+ makelist $INPUTLIST
+ if [ -n "$LIST" ]; then
+ showlist "$LIST" $CMD
+ install_pkg
+ else
+ echo -e "No packages match the pattern for reinstall. Try:"
+ echo -e "\n\t$0 install|upgrade $2\n"
+ POSTINST=off
+ fi
+ ;;
+ upgrade)
+ sanity_check
+ makelist $INPUTLIST
+ if [ -n "$LIST" ]; then
+ showlist "$LIST" $CMD
+ upgrade_pkg
+ else
+ echo -e "No packages match the pattern for upgrade. Try:"
+ echo -e "\n\t$0 install|reinstall $2\n"
+ POSTINST=off
+ fi
+ ;;
+ download)
+ makelist $INPUTLIST
+ DELALL="off"
+ if ! [ "$LIST" = "" ]; then
+ showlist "$LIST" $CMD
+ for i in $SHOWLIST; do
+ getpkg $i true
+ done
+ else
+ echo -e "No packages match the pattern for download."
+ POSTINST=off
+ fi
+ ;;
+ remove)
+ makelist $INPUTLIST
+ if [ "$LIST" = "" ]; then
+ echo -e "The file(s) $INPUTLIST can't be removed - package not installed.\n"
+ cleanup
+ fi
+ showlist "$LIST" $CMD
+ remove_pkg
+ ;;
+ clean-system)
+ makelist $INPUTLIST
+ if [ -n "$LIST" ]; then
+ showlist "$LIST" remove
+ remove_pkg
+ else
+ echo -e "No packages match the pattern for clean-system\n"
+ POSTINST=off
+ fi
+ ;;
+ upgrade-all)
+ sanity_check
+ makelist $INPUTLIST
+ if ! [ -n "${LIST}" ]; then
+ echo -e "No packages match the pattern for upgrade. Try:"
+ echo -e "\n\t$0 install|reinstall $2\n"
+ POSTINST=off
+ else
+ showlist "$LIST" upgrade
+ if [ "$DOWNLOAD_ALL" = "on" ]; then
+ OLDDEL="$DELALL"
+ DELALL="off"
+ for i in $SHOWLIST; do
+ getpkg $i true
+ done
+ DELALL="$OLDDEL"
+ fi
+ FOUND=""
+ FOUND=$(echo $SHOWLIST | tr -s ' ' "\n" | grep "slackpkg-[0-9]")
+ if [ "$FOUND" != "" ]; then
+ getpkg $FOUND upgradepkg Upgrading
+ echo -e "slackpkg was upgraded - you will need start the upgrade process again...\n"
+ cleanup
+ exit 0
+ fi
+ for i in pkgtools glibc-solibs aaa_elflibs readline sed; do
+ FOUND=""
+ FOUND=$(echo $SHOWLIST | tr -s ' ' "\n" | grep "${i}-[0-9]")
+ if [ "$FOUND" != "" ]; then
+ getpkg $FOUND upgradepkg Upgrading
+ fi
+ done
+ upgrade_pkg
+ fi
+ ;;
+ install-new)
+ makelist ${INPUTLIST}
+ if ! [ -n "${LIST}" ]; then
+ echo -e "No packages match the pattern for install. Try:"
+ echo -e "\n\t$0 upgrade|reinstall $2\n"
+ POSTINST=off
+ else
+ showlist "$LIST" install
+ install_pkg
+ fi
+ ;;
+ blacklist)
+ #
+ # If blacklist is called without package name, list
+ # all blacklisted packages
+ if [ "$INPUTLIST" = "" ]; then
+ echo -e "Packages in blacklist:\n"
+ grep -e "^\([a-z]\)" $CONF/blacklist | $MORECMD
+ cleanup
+ fi
+
+ makelist ${INPUTLIST}
+ for i in $LIST; do
+ BASENAME=$(cutpkg $i)
+ BLACKLIST="$BLACKLIST $BASENAME"
+ done
+ BLACKLIST=$(echo $BLACKLIST | tr ' ' "\n")
+ if [ "$BLACKLIST" = "" ]; then
+ echo -e "No packages match the pattern."
+ cleanup
+ else
+ showlist "$BLACKLIST" $CMD
+ fi
+
+ blacklist_pkg
+ ;;
+ file-search)
+ PATTERN=$(echo $ARG | sed -e 's/\+/\\\+/g' -e 's/\./\\\./g' -e 's/ /\|/g')
+ makelist $PATTERN
+
+ if [ "$LIST" = "" ]; then
+ echo -e "No packages contains \"$PATTERN\" file."
+ else
+ echo -e "The list below shows the packages that contains \"$PATTERN\" file.\n"
+ searchlist "$LIST"
+ echo -e "\nYou can search specific packages using \"slackpkg search package\".\n"
+ fi
+ ;;
+ search)
+ PATTERN=$(echo $ARG | sed -e 's/\+/\\\+/g' -e 's/\./\\\./g' -e 's/ /\|/g')
+ makelist $PATTERN
+
+ if [ "$LIST" = "" ]; then
+ echo -e "No package name matches the pattern."
+ else
+ echo -e "The list below shows all packages with name matching \"$PATTERN\".\n"
+ searchlist "$LIST"
+ echo -e "\nYou can search specific files using \"slackpkg file-search file\".\n"
+ fi
+ ;;
+ info)
+ PATTERN=$(echo $ARG | sed -e 's/\+/\\\+/g' -e 's/\./\\\./g')
+ NAME=$(cutpkg $PATTERN)
+ awk -F: "/PACKAGE NAME:.* ${NAME}-[^-]+-(${ARCH}|fw|noarch)-[^-]+/,/^$/ {
+ found=1
+ if (\$1 ~ /"$NAME"/) {
+ print \$PATTERN
+ } else {
+ print \$0
+ }
+ }
+ END {
+ if ( found != 1 ) {
+ print \"No packages found! Try:\n\n\tslackpkg search $PATTERN\n\nand choose one (and ONLY one package).\n\"
+ }
+ }" ${WORKDIR}/PACKAGES.TXT 2>/dev/null
+ ;;
+ new-config)
+ POSTINST=on
+ ;;
+ generate-template)
+ TEMPLATE=$ARG.template
+ if [ -e $TEMPLATEDIR/$TEMPLATE ]; then
+ echo -e "\
+\"$TEMPLATE\" already exists!\n\
+\nDo you want to overwrite $TEMPLATE (y/N)? \c"
+ answer
+ if [ "$ANSWER" = "Y" -o "$ANSWER" = "y" ]; then
+ rm $TEMPLATEDIR/$TEMPLATE
+ echo
+ else
+ cleanup
+ fi
+ fi
+ generate_template $ARG
+ ;;
+ install-template)
+ TEMPLATE=$ARG.template
+ if [ -e $TEMPLATEDIR/$TEMPLATE ]; then
+ ( cd $TEMPLATEDIR
+ parse_template $TEMPLATE
+ )
+ INPUTLIST=$(cat ${TMPDIR}/${TEMPLATE}.tmp | tr "\n" " ")
+ else
+ echo -e "$ARG template not found!"
+ cleanup
+ fi
+
+ makelist $INPUTLIST
+ if [ -n "$LIST" ]; then
+ showlist "$LIST" $CMD
+ install_pkg
+ else
+ echo -e "All packages from $ARG template are already installed"
+ POSTINST=off
+ fi
+ ;;
+ remove-template)
+ TEMPLATE=$ARG.template
+ if [ -e $TEMPLATEDIR/$TEMPLATE ]; then
+ ( cd $TEMPLATEDIR
+ parse_template $TEMPLATE
+ )
+ INPUTLIST=$(cat ${TMPDIR}/${TEMPLATE}.tmp | tr "\n" " ")
+ else
+ echo -e "$ARG template not found!"
+ cleanup
+ fi
+
+ makelist $INPUTLIST
+ if [ "$LIST" = "" ]; then
+ echo -e "The template $ARG can't be removed - it isn't installed.\n"
+ cleanup
+ fi
+ showlist "$LIST" $CMD
+ remove_pkg
+ ;;
+ *)
+ usage
+ ;;
+esac
+
+#
+# Executes the post-install. This is the default
+# Before runs post-install, check if the slackpkg option is
+# remove, search, update, blacklist, info or clean-system.
+# That options don't change configurations files and, if
+# someone remove the kernel, i hope he knows what is doing.
+#
+for i in check-updates remove search file-search update blacklist info \
+ clean-system download generate-template remove-template; do
+ if [ "$CMD" = "$i" ]; then
+ POSTINST=off
+ fi
+done
+
+if [ "$POSTINST" != "off" ]; then
+ lookkernel
+ looknew
+fi
+
+cleanup
diff --git a/source/ap/slackpkg/files/slackpkg.8 b/source/ap/slackpkg/files/slackpkg.8
new file mode 100644
index 00000000..1cf8326c
--- /dev/null
+++ b/source/ap/slackpkg/files/slackpkg.8
@@ -0,0 +1,337 @@
+.TH SLACKPKG 8 "May 2010" slackpkg-2.81.1 ""
+.SH NAME
+.B slackpkg
+\- Automated tool for managing Slackware Linux packages
+
+.SH SYNOPSIS
+.B slackpkg
+.B [OPTIONS]
+.B {install|remove|search|upgrade|reinstall|blacklist}
+.BI { PATTERN | FILE }
+
+.B slackpkg [OPTIONS] {clean-system|upgrade-all|install-new}
+
+.B slackpkg
+.B [OPTIONS]
+.B {search|file-search}
+.BI { PATTERN | FILE }
+
+.B slackpkg
+.B [OPTIONS]
+.B {generate-template|install-template|remove-template}
+.I TEMPLATENAME
+
+.B slackpkg [OPTIONS] info
+.I PACKAGE
+
+.B slackpkg [OPTIONS] update [gpg]
+
+.B slackpkg [OPTIONS] {new-config|check-updates}
+
+.B slackpkg [OPTIONS] help
+
+.SH DESCRIPTION
+Slackpkg is a tool for those who want to easily install or upgrade
+packages via the network. With slackpkg, you can have a minimal
+installation of Slackware Linux and install/upgrade only those packages
+you need most.
+
+You don't need to setup NFS or make dozens of CDs for all your
+computers; all you need to do is to type one command and all of
+the latest official Slackware packages will be at your fingertips.
+
+.SH INSTRUCTIONS
+Slackpkg has many features. It can search for specific files, remove
+all third-party packages in your system, install packages added to
+Slackware since your last update, show package descriptions, etc.
+
+Before you do anything, you will need to uncomment one mirror in
+/etc/slackpkg/mirrors file and run:
+
+.in +5
+# slackpkg update
+.in
+
+The "update" action will download and format the list of files and
+packages in Slackware. Every time this list is changed, the update
+needs to be run.
+
+The main features of Slackpkg are the ones directly related to
+package management: install, upgrade, and remove packages.
+To do any of these tasks, the Slackpkg syntax is:
+
+.in +5
+# slackpkg [OPTIONS] <action> {PATTERN|FILE}
+.in
+
+.I OPTIONS
+can be one or more of the many configuration options listed in
+/etc/slackpkg/slackpkg.conf. There are equivalent command line options
+for most of the configuration directives found in slackpkg.conf - see the
+.B slackpkg.conf(5)
+man-page to see what options are available.
+
+.I PATTERN
+can be a package name or just part of package name. It can also
+be a software series (like kde, a, ap, ...).
+.br
+
+.I FILE
+is a file with a list of
+.I PATTERNs
+inside: either one per line,
+or several per line with spaces as separators.
+
+Slackpkg can be used to upgrade the whole distribution.
+.br
+The usual way is to do:
+
+.in +5
+# slackpkg update
+.br
+# slackpkg install-new
+.br
+# slackpkg upgrade-all
+.br
+# slackpkg clean-system
+.in
+
+Another feature of Slackpkg is the ability to work with templates, which can
+make it much easier to create different machines with the same contents of
+packages. The basic steps are as follows:
+
+.RS +5
+.IP \(bu 2
+Install one machine
+.IP \(bu 2
+Run "slackpkg generate-template TEMPLATENAME"
+.IP \(bu 2
+Copy /etc/slackpkg/templates/TEMPLATENAME.template to the same directory on
+the other machine
+.IP \(bu 2
+Run "slackpkg install-template TEMPLATENAME" on the other machine
+.RE
+
+.I TEMPLATENAME
+is the name of your template.
+
+Following this manual page, you can find what each of these (and other)
+actions does.
+
+.SH ACTIONS
+.TP 5
+.B help
+.br
+Show slackpkg's actions and a short description of them. Useful if you need
+to know a little about slackpkg. The information here, on man-page is much
+more complete.
+
+.TP 5
+.B update
+.br
+update will download the latest package lists from a Slackware mirror
+(or your CD). It's a good idea to run
+
+.in +5
+# slackpkg update
+.in
+
+before attempting to upgrade, install, or search for packages.
+.br
+If you need to update Slackware's GPG key, run
+
+.in +5
+# slackpkg update gpg
+.in
+
+The GPG key doesn't change. This should be a "one time" command - run it
+once and forget it...
+
+.TP 5
+.B check-updates
+.br
+Verify if there is any update to ChangeLog.txt. This is good to be used from
+cron to alert the sysadmin about updates.
+
+.TP 5
+.B file-search
+.br
+You can search the official Slackware packages for any file in the Slackware
+distribution. Do you need a strange library? Use file-search to find it.
+
+.in +5
+# slackpkg file-search filename
+.in
+
+All packages with matching "filename" will be shown, thus you can see whether
+the packages are installed or not; if not, you can download and install them
+with other slackpkg actions.
+
+.TP 5
+.B search
+.br
+You can search for any package distributed in Slackware.
+
+.in +5
+# slackpkg search pattern
+.in
+
+All packages names that matches with "pattern" will be shown.
+Like file-search, you can see whether the packages are installed or not; if
+not, you can download and install them with other slackpkg actions.
+
+.TP 5
+.B install
+.br
+Installation of a package is very simple. Just use a command like this:
+
+.in +5
+# slackpkg install package
+.in
+
+and the package will be downloaded and installed.
+.br
+You can't use the "install" option to install an already installed package,
+but you may reinstall or upgrade it.
+
+.TP 5
+.B upgrade
+.br
+upgrade installs the most recent official version of the specified package(s).
+
+upgrade will not attempt to install new packages (use the install
+function for that purpose; the latest official version of the package
+will be installed).
+.TP 5
+.B reinstall
+.br
+In case you mistakenly corrupt something, the reinstall option will allow
+you to reinstall the same version of a package that is currently installed.
+
+.TP 5
+.B remove
+.br
+With remove, you can remove certain installed packages. As an example:
+
+.in +5
+# slackpkg remove kde
+.in
+
+will remove all packages with "kde" in their name.
+
+.TP 5
+.B blacklist
+.br
+With this action, you can "blacklist" certain packages.
+.br
+Blacklisted packages will not be installed, upgraded, or removed by slackpkg.
+If you want to remove some package from the black list, please edit
+/etc/slackpkg/blacklist.
+
+.TP 5
+.B download
+.br
+This action tells slackpkg to download the packages, but not to install them.
+They will be placed in /var/cache/packages, and you can
+install/upgrade/reinstall them later (or burn them to CD).
+
+.TP 5
+.B info
+.br
+This action prints information about the package(s): compressed and
+uncompressed size, description, etcetera...
+
+.TP 5
+.B clean-system
+.br
+This action removes all of the packages that don't belong to a standard
+Slackware installation. With this option, you can clean up your system,
+removing third-party packages as well as any packages that were removed
+from the official Slackware package set.
+.br
+If you have some third party (or custom built) packages that you would like
+to keep, you can temporarily add them to the list of blacklisted packages
+before you run the 'clean-system' action.
+
+.TP 5
+.B upgrade-all
+.br
+This action upgrades every package installed on the system to the version in
+the official Slackware tree; this is the "good" way to upgrade the entire
+system.
+.br
+Remember to use the "install-new" action before you use "upgrade-all."
+
+.TP 5
+.B install-new
+This action installs any new packages that are added to the official
+Slackware package set. Run this if you are upgrading your system to
+another Slackware version or if you are using -current.
+.br
+If you want to install all uninstalled Slackware packages onto your system,
+use the following command instead of the install-new action:
+
+.in +5
+# slackpkg install slackware.
+.in
+.TP 5
+.B new-config
+This action searches for .new configuration files and ask the user what to
+do with those files.
+.br
+new-config is very useful when you perform an upgrade and leave the
+configuration files to be reviewed later. Instead of a manual search,
+diff, and replace; you can use the new-config action.
+.TP 5
+.B generate-template
+This action creates a new template with all official packages that are
+installed in your system. The template is stored at /etc/slackpkg/templates
+.TP 5
+.B install-template
+This action install the required template in the system. The template must
+be in /etc/slackpkg/templates. If the template "includes" other templates,
+all of them need to be in /etc/slackpkg/templates. You can disable the
+"includes" in slackpkg.conf or in command-line.
+.TP 5
+.B remove-template
+This action remove all packages that are part of selected template. Be
+careful, this can put your machine in an unusable state. The "include"
+handling can be activated/deactivated in slackpkg.conf or with the
+appropriate option in command-line.
+
+.SH FILES
+.TP 5
+.B /etc/slackpkg/mirrors
+File to specify the location from which to download packages
+.TP 5
+.B /etc/slackpkg/slackpkg.conf
+General configuration of slackpkg
+.TP 5
+.B /etc/slackpkg/blacklist
+List of packages to skip
+.TP 5
+.B /etc/slackpkg/templates
+Contains all template files
+.TP 5
+.B /usr/libexec/slackpkg
+Contains slackpkg core and additional functions
+.TP 5
+.B /var/lib/slackpkg
+Slackpkg internal use - Formatted package lists, copy of
+ChangeLog.txt, list of files, etcetera...
+
+.SH "SEE ALSO"
+.BR slackpkg.conf (5),
+.BR installpkg (8),
+.BR upgradepkg (8),
+.BR explodepkg (8),
+.BR makepkg (8),
+.BR pkgtool (8).
+
+.SH AUTHORS
+.TP 5
+Piter PUNK aka Roberto F Batista
+<piterpk AT terra DOT com DOT br>
+.TP 5
+Evaldo Gardenali aka UdontKnow
+<evaldo AT fasternet DOT com DOT br>
diff --git a/source/ap/slackpkg/files/slackpkg.conf.5 b/source/ap/slackpkg/files/slackpkg.conf.5
new file mode 100644
index 00000000..d135a4e8
--- /dev/null
+++ b/source/ap/slackpkg/files/slackpkg.conf.5
@@ -0,0 +1,338 @@
+.TH SLACKPKG.CONF 5 "May 2010" slackpkg-2.81.1 ""
+.SH NAME
+.B slackpkg.conf
+\- Configuration data for slackpkg
+
+.SH DESCRIPTION
+
+The slackpkg.conf file contains information for
+.B slackpkg
+(8), an automated tool for managing Slackware Linux packages.
+
+The slackpkg.conf file is a sequence of shell script variables, and each
+variable controls one aspect of slackpkg. Comments begin with the #
+character and end at end of the line, and comments may appear anywhere
+inside the slackpkg.conf file. If some variable appears more than once
+in the file, slackpkg will use the value that was defined last.
+
+Many variables can be overridden by options passed to slackpkg on the command
+line. If you need to override the value of
+.B VARIABLE
+, pass
+.B -variable=value
+on the command line just before the slackpkg action. Multiple variables may
+be overridden.
+
+EXAMPLE: slackpkg -batch=on -default_answer=y upgrade-all
+
+For configuration options that have only two states, possible values are
+either "on" or "off" unless otherwise indicated.
+
+The different configuration options are:
+
+.TP 5
+.B ARCH
+.br
+Chooses the system architecture. Usually Slackpkg can found the correct
+value using "uname -m". The valid values are:
+
+.ds title MACHINE\t\tVALID ARCH VALUES
+.ds arm ARM\t\t\tarm
+.ds x86 x86 (32bits)\ti386, i486, i586 and i686
+.ds x86_64 x86 (64bits)\tx86_64
+.ds ppc PowerPC\t\tpowerpc
+.ds s390 S/390\t\t390
+.in +5
+.B \*[title]
+.br
+\*[arm]
+.br
+\*[x86]
+.br
+\*[x86_64]
+.br
+\*[ppc]
+.br
+\*[s390]
+.in
+
+The default value of
+.B ARCH
+depends on your architecture.
+
+.TP 5
+.B SLACKKEY
+.br
+Slackpkg checks the package signature file (.asc) against the GPG signature
+of the project. Different ports of Slackware can have different signatures,
+and Slackpkg tries to find the correct one based on the architecture of your
+system. If the automatically-detected
+.B SLACKKEY
+isn't correct, you can change it using this option.
+
+The default value of
+.B SLACKKEY
+depends on your Slackware port.
+
+.TP 5
+.B TEMP
+.br
+Defines the location to which slackpkg will download the packages before
+installing/upgrading them.
+
+The default value of
+.B TEMP
+is /var/cache/packages.
+
+.TP 5
+.B WORKDIR
+.br
+Defines the directory for package lists, file lists, and other information
+used by slackpkg as it works. Do not change the value of this variable
+unless you know what you are doing.
+
+The default value of
+.B WORKDIR
+is /var/lib/slackpkg.
+
+.TP 5
+.B WGETFLAGS
+.br
+Selects special options for wget. If you need to use multiple options,
+remember to put them between double quotes.
+
+The default value of
+.B WGETFLAGS
+is "\--passive-ftp"
+
+.TP 5
+.B DELALL
+.br
+If set to "on", all downloaded files will be removed after slackpkg performs
+install or upgrade (this does NOT have any impact when slackpkg is run with
+"download"). If set to "off", the files will be kept in the directory
+defined in
+.B TEMP
+(as described above).
+
+The default value of
+.B DELALL
+is "on".
+.br
+From command line, you can use -delall=value.
+
+.TP 5
+.B CHECKMD5
+.br
+Enables (on) or disables (off) the checking of MD5 checksums of all downloaded
+packages before installing or upgrading them.
+
+The default value of
+.B CHECKMD5
+is "on".
+.br
+From command line, you can use -checkmd5=value.
+
+.TP 5
+.B CHECKGPG
+.br
+Enables (on) or disables (off) the check of GPG signature for each package
+before install or upgrade.
+
+The default value of
+.B CHECKGPG
+is "on".
+.br
+From command line, you can use -checkgpg=value.
+
+.TP 5
+.B CHECKSIZE
+.br
+Enables (on) or disables (off) the check of available disk space for each
+package before install or upgrade.
+
+The default value of
+.B CHECKSIZE
+is "off".
+.br
+From command line, you can use -checksize=value.
+
+.TP 5
+.B PKGMAIN
+.br
+Defines the main distribution directory. Usually, you don't need to worry
+about this variable, as Slackpkg tries to find it based on your architecture.
+However, if you need to change it, then include this variable in your
+slackpkg.conf. This should always be the directory which contains the
+Slackware package set series (A, AP, D, E, F, ...).
+
+Default: depends on Slackware port
+
+.TP 5
+.B PRIORITY
+.br
+This array selects the priority at which directories on the mirror will have
+when slackpkg looks for packages. If a package is found in more than one
+place, the package in first directory gets priority, then second, then third,
+then fourth and finally, the package found in last listed directory. You can
+use %PKGMAIN to use the contents of PKGMAIN variable.
+
+Default values (in order): patches %PKGMAIN extra pasture testing
+
+.TP 5
+.B POSTINST
+.br
+Enables (on) or disables (off) slackpkg's post-installation features, such
+as checking for new (*.new) configuration files and new kernel images, and
+prompts you for what it should do.
+
+The default value of
+.B POSTINST
+is "on".
+.br
+From command line, you can use -postinst=value.
+
+.TP 5
+.B ONLY_NEW_DOTNEW
+.br
+When
+.B POSTINST
+is set to "on", slackpkg will search for all .new files inside /etc and
+prompt the user for what to do with them. However, some users prefer to
+see only the .new files installed in slackpkg's last execution, so if
+this applies to you, set
+.B ONLY_NEW_DOTNEW
+to "on".
+
+The default value of
+.B ONLY_NEW_DOTNEW
+is "off". Only change this if you know what are you doing...
+.br
+From command line, you can use -only_new_dotnew=value.
+
+.TP 5
+.B ONOFF
+.br
+The
+.B ONOFF
+variable sets the initial behavior of the dialog interface.
+If you set this to "on" then all packages will be selected by default.
+If you prefer the opposite option (all unchecked), then set this to "off".
+
+The default value of
+.B ONOFF
+is "on".
+.br
+From command line, you can use -onoff=value.
+
+.TP 5
+.B DOWNLOAD_ALL
+.br
+If this variable is set to "on", all files will be downloaded before the
+requested operation (install or upgrade) is performed. If set to "off",
+then the files will be downloaded and the operation (install/upgrade) performed
+one by one.
+
+The default value of
+.B DOWNLOAD_ALL
+is "off".
+.br
+From command line, you can use -download_all=value.
+
+.TP 5
+.B DIALOG
+.br
+Enables (on) or disables (off) the dialog interface.
+
+The default value of
+.B DIALOG
+is "on".
+.br
+From command line, you can use -dialog=value.
+
+.TP 5
+.B DIALOG_MAXARGS
+.br
+Set the max number of characters that will be send to "dialog". If this number
+is reached in upgrade, slackpkg removes the information about current installed
+version of each package. If even without this information the number is reached
+again, slackpkg returns an error to the user.
+
+If
+.B DIALOG_MAXARGS
+is unset, 19500 is the default value.
+.br
+From command line, you can use -dialog_maxargs=value.
+
+.TP 5
+.B BATCH
+.br
+Enables (on) or disables (off) the non-interactive mode. When run in batch
+mode, slackpkg will not prompt the user for anything; instead, all questions
+will get
+.B DEFAULT_ANSWER
+(see below).
+.br
+If you perform an upgrade using this mode, you will need to run
+"slackpkg new-config" later to find and merge .new files.
+
+The default value of
+.B BATCH
+is "off".
+.br
+From command line, you can use -batch=value.
+
+.TP 5
+.B DEFAULT_ANSWER
+.br
+This is the default answer to questions when slackpkg prompts the user for
+some information. This is used only in non-interactive mode (when
+.B BATCH
+is "yes" or the user turns batch mode on via the command line); otherwise,
+this variable has no effect.
+.br
+Valid values are "y" or "n".
+
+The default value of
+.B DEFAULT_ANSWER
+is "n".
+.br
+From command line, you can use -default_answer=value.
+
+.TP 5
+.B USE_INCLUDES
+.br
+Slackpkg templates can include other templates. This reduces the package
+duplication in many templates, but it can be a problem if you want to remove
+only a specific template. You can disable the #include parsing by setting
+this option to "off".
+
+The default value of
+.B USE_INCLUDES
+is "on".
+.br
+From command line, you can use -use_includes=value.
+
+.TP 5
+.B SPINNING
+.br
+When Slackpkg is doing an activity that takes some time, it gives visual
+feedback with a spinning bar. If you don't like the spinning bar, it can be
+disabled by setting this option to "off".
+
+The default value of
+.B SPINNING
+is "on".
+.br
+From command line, you can use -spinning=value.
+
+.SH FILES
+.TP 5
+.B /etc/slackpkg/slacpkg.conf
+
+.SH "SEE ALSO"
+.BR slackpkg (8)
+.BR pkgtool (8)
+.BR installpkg (8)
+.BR upgradepkg (8)
+.BR removepkg (8)
diff --git a/source/ap/slackpkg/files/slackpkg.conf.new b/source/ap/slackpkg/files/slackpkg.conf.new
new file mode 100644
index 00000000..9eae0ab2
--- /dev/null
+++ b/source/ap/slackpkg/files/slackpkg.conf.new
@@ -0,0 +1,153 @@
+#
+# slackpkg.conf - Configuration for SlackPkg
+# v2.8
+#
+
+#
+# SlackPkg - An Automated packaging tool for Slackware Linux
+# Copyright (C) 2003-2011 Roberto F. Batista, Evaldo Gardenali
+#
+# This program 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 2 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# Project Page: http://slackpkg.org/
+# Roberto F. Batista (aka PiterPunk) piterpunk@slackware.com
+# Evaldo Gardenali (aka UdontKnow) evaldogardenali@fasternet.com.br
+#
+
+# For configuration options that have only two states, possible values are
+# either "on" or "off"
+
+# Remember, the only official Slackware ports are x86, s390 and arm, and
+# slackpkg developers don't have s390 boxes for testing. If you are
+# testing/using other architectures and have suggestions or patches,
+# please let me know (piterpunk@slackware.com)
+#
+# Select the architecture of your system. Valid values are:
+# i#86 (where # is 3, 4, 5 or 6)
+# x86_64
+# s390
+# arm* (* can be v4, v5tejl, and other ARM versions)
+# powerpc
+#
+# The line is commented because slackpkg will try to find your
+# architecture automagically. If you want to override what slackpkg
+# finds, put the value after the = and uncomment this line
+#ARCH=
+
+# The default PKGMAIN is "slackware", but some derived distros use other
+# names as the main directory. PKGMAIN is the place with the slackware
+# package series (a, ap, n, ... ).
+#
+# Usually slackpkg can automagically discover this variable. If you want
+# to override the discovered variable, then uncomment this line and change
+# it to reflect the correct value of PKGMAIN
+#PKGMAIN=slackware
+
+# Slackware packages are signed by project key. Slackpkg uses this key
+# to check if the packages downloaded are valid, so remember to set
+# CHECKGPG to "on".
+#
+# Usually slackpkg can automagically discover this variable. If you want
+# to override the discovered variable, then uncomment this line and edit
+# as needed
+#SLACKKEY="Slackware Linux Project <security@slackware.com>"
+
+# Downloaded files will be in directory below:
+TEMP=/var/cache/packages
+
+# Package lists, file lists, and others will be at WORKDIR:
+WORKDIR=/var/lib/slackpkg
+
+# Special options for wget (default is WGETFLAGS="--passive-ftp")
+WGETFLAGS="--passive-ftp"
+
+# If DELALL is "on", all downloaded files will be removed after install.
+DELALL=on
+
+# If CHECKMD5 is "on", the system will check the md5sums of all packages before
+# install/upgrade/reinstall is performed.
+CHECKMD5=on
+
+# If CHECKGPG is "on", the system will verify the GPG signature of each package
+# before install/upgrade/reinstall is performed.
+CHECKGPG=on
+
+# If CHECKSIZE is "on", the system will check if we have sufficient disk
+# space to install selected package. This make upgrade/install safer, but slow
+# upgrade/install process.
+CHECKSIZE=off
+
+# PRIORITY sets the download priority. slackpkg will try to found the
+# package first in the first value, then the second one, through all
+# values in list.
+#
+# Default value: patches %PKGMAIN extra pasture testing
+PRIORITY=( patches %PKGMAIN extra pasture testing )
+
+# Enables (on) or disables (off) slackpkg's post-installation features, such
+# as checking for new (*.new) configuration files and new kernel images, and
+# prompts you for what it should do. Default=on
+POSTINST=on
+
+# Post-installation features, by default, search all of /etc for .new files.
+# This is the safe option: with it, you won't have any unmerged .new files
+# to cause problems. Even so, some people prefer that only the .new files
+# installed by the current slackpkg session be checked.
+# If this is your case, change ONLY_NEW_DOTNEW to "on".
+# Default=off
+ONLY_NEW_DOTNEW=off
+
+# The ONOFF variable sets the initial behavior of the dialog interface.
+# If you set this to "on" then all packages will be selected by default.
+# If you prefer the opposite option (all unchecked), then set this to "off".
+ONOFF=on
+
+# If this variable is set to "on", all files will be downloaded before the
+# requested operation (install or upgrade) is performed. If set to "off",
+# then the files will be downloaded and the operation (install/upgrade)
+# performed one by one. Default=on
+DOWNLOAD_ALL=on
+
+# Enables (on) or disables (off) the dialog interface in slackpkg. Default=on
+DIALOG=on
+
+# Enables (on) or disables (off) the non-interactive mode. If set to "on",
+# slackpkg will run without asking the user anything, and answer all questions
+# with DEFAULT_ANSWER. If you do any upgrades using this mode, you'll need to
+# run "slackpkg new-config" later to find and merge any .new files.
+BATCH=off
+
+# Default answer to slackpkg questions. Can be "y" or "n".
+DEFAULT_ANSWER=n
+
+# Slackpkg allows a template to "include" the packages specified in another
+# template. This option enables (on) or disables (off) the parsing of
+# any "#include" directives in template files. Default=on
+USE_INCLUDES=on
+
+# Enables a spinning bar as visual feedback when slackpkg is making its
+# internal lists and some other operations. Default=on
+SPINNING=on
+
+# Max number of characters that "dialog" command can handle.
+# If unset, this variable will be 19500 (the number that works on
+# Slackware 10.2)
+DIALOG_MAXARGS=139000
+
+#
+# The MIRROR is set from /etc/slackpkg/mirrors
+# You only need to uncomment the selected mirror.
+# Uncomment one mirror only.
+#
diff --git a/source/ap/slackpkg/slack-desc b/source/ap/slackpkg/slack-desc
new file mode 100644
index 00000000..e8af640f
--- /dev/null
+++ b/source/ap/slackpkg/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-handy-ruler------------------------------------------------------|
+slackpkg: slackpkg
+slackpkg:
+slackpkg: Slackpkg is a package manager for Slackware. It can download,
+slackpkg: upgrade, install and remove selected packages. With it, you
+slackpkg: can search in the Slackware Package database and find which
+slackpkg: package has the selected file.
+slackpkg:
+slackpkg: Slackpkg DOESN'T replace pkgtool. Actually, Slackpkg uses pkgtool
+slackpkg: for all install|upgrade|remove functions.
+slackpkg:
+slackpkg:
diff --git a/source/ap/slackpkg/slackpkg.SlackBuild b/source/ap/slackpkg/slackpkg.SlackBuild
new file mode 100755
index 00000000..adf7b488
--- /dev/null
+++ b/source/ap/slackpkg/slackpkg.SlackBuild
@@ -0,0 +1,119 @@
+#!/bin/sh
+
+# Copyright 2016 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+PKGNAM=slackpkg
+VERSION=2.82.1
+BUILD=${BUILD:-3}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# I never use this because it tends to bail on useless errors, but since
+# we're actually the upstream here it should never do that. :-)
+set -e
+
+cd $CWD/files
+
+# Install main script:
+mkdir -pv $PKG/usr/sbin
+cp -av slackpkg.gz $PKG/usr/sbin
+gzip -d $PKG/usr/sbin/slackpkg.gz
+chmod 755 $PKG/usr/sbin/slackpkg
+chown root:root $PKG/usr/sbin/slackpkg
+
+# Prepare /etc directory:
+mkdir -pv $PKG/etc/slackpkg
+cp -av blacklist.new.gz slackpkg.conf.new.gz $PKG/etc/slackpkg
+gzip -d $PKG/etc/slackpkg/*
+chmod 644 $PKG/etc/slackpkg/*
+chown root:root $PKG/etc/slackpkg/*
+mkdir -pv $PKG/etc/slackpkg/templates
+
+# Install support scripts in /usr/libexec/slackpkg:
+mkdir -pv $PKG/usr/libexec/slackpkg
+cp -av core-functions.sh.gz cutpkg.awk.gz filelist.awk.gz install-new.awk.gz pkglist.awk.gz \
+ $PKG/usr/libexec/slackpkg
+gzip -d $PKG/usr/libexec/slackpkg/*
+chmod 755 $PKG/usr/libexec/slackpkg/*
+chown root:root $PKG/usr/libexec/slackpkg/*
+mkdir -pv $PKG/usr/libexec/slackpkg/functions.d
+cp -av dialog-functions.sh.gz post-functions.sh.gz \
+ $PKG/usr/libexec/slackpkg/functions.d
+gzip -d $PKG/usr/libexec/slackpkg/functions.d/*
+chmod 755 $PKG/usr/libexec/slackpkg/functions.d/*
+chown root:root $PKG/usr/libexec/slackpkg/functions.d/*
+
+# Install man pages:
+mkdir -pv $PKG/usr/man/man5
+cp -av slackpkg.conf.5.gz $PKG/usr/man/man5
+chmod 644 $PKG/usr/man/man5/slackpkg.conf.5.gz
+chown root:root $PKG/usr/man/man5/slackpkg.conf.5.gz
+mkdir -pv $PKG/usr/man/man8
+cp -av slackpkg.8.gz $PKG/usr/man/man8
+chmod 644 $PKG/usr/man/man8/slackpkg.8.gz
+chown root:root $PKG/usr/man/man8/slackpkg.8.gz
+
+# Install internationalized man pages from
+# http://slint.fr/forSlackware/man_l10n/slackpkg/
+( cd $PKG/usr/man
+ tar xf $CWD/manpages-l10n.tar.xz
+ for page in manpages-l10n/*slackpkg.conf ; do
+ manpage=$(basename $page)
+ mkdir -p ${manpage%%.*}/man5
+ mv $page ${manpage%%.*}/man5/${page#*.}.5
+ done
+ for page in manpages-l10n/* ; do
+ manpage=$(basename $page)
+ mkdir -p ${manpage%%.*}/man8
+ mv $page ${manpage%%.*}/man8/${page#*.}.8
+ done
+ gzip -9 */man?/*.?
+ rmdir manpages-l10n
+)
+
+# Update version number:
+sed -i "s/@VERSION@/$VERSION/g" $PKG/usr/sbin/slackpkg
+
+# Prepare documentation directory:
+mkdir -pv $PKG/usr/doc/slackpkg-$VERSION
+cp -av ChangeLog.gz GPL.gz README.gz mirrors* \
+ $PKG/usr/doc/slackpkg-$VERSION
+chown root:root $PKG/usr/doc/slackpkg-$VERSION/*
+chmod 644 $PKG/usr/doc/slackpkg-$VERSION/*
+gzip -d $PKG/usr/doc/slackpkg-$VERSION/*
+
+# Create additional directories needed by slackpkg:
+mkdir -pv $PKG/var/lib/slackpkg
+mkdir -pv $PKG/var/cache/packages
+
+mkdir -p $PKG/install
+zcat $CWD/doinst.sh.gz | sed -e "s/@VERSION@/$VERSION/g" > $PKG/install/doinst.sh
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-noarch-$BUILD.txz
+