summaryrefslogtreecommitdiffstats
path: root/source/d/slacktrack/slacktrack-project/docs
diff options
context:
space:
mode:
Diffstat (limited to 'source/d/slacktrack/slacktrack-project/docs')
-rw-r--r--source/d/slacktrack/slacktrack-project/docs/ChangeLog.slacktrack705
-rw-r--r--source/d/slacktrack/slacktrack-project/docs/FAQ234
-rw-r--r--source/d/slacktrack/slacktrack-project/docs/INSTALL9
-rw-r--r--source/d/slacktrack/slacktrack-project/docs/OVERVIEW595
-rw-r--r--source/d/slacktrack/slacktrack-project/docs/PACKAGE_BUILDING_CHECKLIST244
-rw-r--r--source/d/slacktrack/slacktrack-project/docs/PACKAGE_BUILDING_URLS38
-rw-r--r--source/d/slacktrack/slacktrack-project/docs/RELEASE_NOTES137
-rw-r--r--source/d/slacktrack/slacktrack-project/docs/SLACKDTXT.examples103
-rw-r--r--source/d/slacktrack/slacktrack-project/docs/SLACKTRACK.examples34
-rw-r--r--source/d/slacktrack/slacktrack-project/docs/TODO65
-rw-r--r--source/d/slacktrack/slacktrack-project/docs/USAGE8
-rw-r--r--source/d/slacktrack/slacktrack-project/docs/WARNINGS38
-rw-r--r--source/d/slacktrack/slacktrack-project/docs/buildscript-examples/README19
13 files changed, 2229 insertions, 0 deletions
diff --git a/source/d/slacktrack/slacktrack-project/docs/ChangeLog.slacktrack b/source/d/slacktrack/slacktrack-project/docs/ChangeLog.slacktrack
new file mode 100644
index 000000000..1d656d175
--- /dev/null
+++ b/source/d/slacktrack/slacktrack-project/docs/ChangeLog.slacktrack
@@ -0,0 +1,705 @@
+##############################################################################
+# Document: ChangeLog.slacktrack
+# Purpose : Document the changes that have occurred in 'slacktrack'
+##############################################################################
+
+07-Jun-2017 - v2.18
+ * Added option --run-after-withlog
+ This option is the same as -R, --run-after, with the only difference
+ being that any output from that script is logged to the slacktrack build
+ log.
+
+25-Apr-2015 - v2.17
+ * Cleaned up superfluous white space.
+ * Added operator -o, --no-fs-search
+ Prior to beginning a build, and post build, slacktrack uses the 'find'
+ command to scan the OS' file system, and stores these records. The
+ difference between the two records are used to determine the package's
+ contents.
+
+ This default set is ideal for a default Slackware installation, but some
+ users have data in other directories which should never be included in a
+ package. Scanning these additional directories takes extra time and serves
+ no purpose.
+
+ While the -x,--exclude operator is applied to the final package
+ contents list, -o, --no-fs-search is applied before and can be used to
+ significantly speed up the searches that build the before/after file lists.
+
+ Thanks to Andrew Lyon for the patch.
+
+10-Jan-2014 - v2.16
+ * Added the following paths to the default exclude list:
+ /usr/man/whatis
+ /usr/local/man/whatis
+ /var/lib/pgsql/
+ /var/lib/mysql/
+ Thanks to Eduard Rozenberg.
+ * Updated the 'OVERVIEW' doc to correct a couple of small details.
+ * Updated man pages to conform with stricter pod2man syntax.
+ * Updated FAQ to explain why after using one of the 'touch file system'
+ options, root is notified about having new mail.
+
+23-May-2013 - v2.15
+ * Added the $PWD from which slacktrack was invoked in to the default exclude
+ list. This allows a package's source directory to be in a non-default
+ excluded path and receive updates (such as log files) and avoid slacktrack
+ including them in the newly created package file.
+ Thanks to Eduard Rozenberg.
+
+10-May-2013 - v2.14
+ * Removed '-i, --install' flag from the man page and the slacktrack script,
+ as this has been a no-op since slacktrack stopped using 'installwatch'.
+ Thanks to Michael Stewart.
+ * Added /etc/ntp/drift to the default exclude list.
+ Thanks to Eduard Rozenberg.
+
+05-Apr-2013 - v2.13
+ * Use '-c' operator to 'touch' when touching the file system. This avoids
+ creating empty files that were referenced from a dangling symlink, and
+ avoids creating empty files when using the (not recommended) 'faster'
+ file system touch option.
+ * Moved slacktrack's 'ln' wrapper from /usr/share/slacktrack to
+ /usr/libexec/slacktrack, since /usr/share is for architecture independent
+ files.
+ Thanks to Darren Austin for the suggestion.
+ * Added '/usr/libexec' to the default list of library locations that will
+ have their ELF objects stripped.
+ * Capture the output of touching the file system into the slacktrack log
+ file, as this can be useful for recording any issues resulting from touching
+ files on the file system (such as dangling symlinks in existing installed
+ packages).
+ * Support supplying the full path name using the -p operator. Previously,
+ to store the resulting .t?z package in a location other than the default
+ ('/tmp'), you had to supply -b <dir name> in addition to -p <package name>
+ This was a somewhat wooly distinction between package *name* and package
+ *file name*.
+ The package name can now be supplied using:
+ # slacktrack [options] -p /somedir/foo-1.01-arm-2.tgz
+ The -b operator is still effective, so previous 'trackbuild' scripts will
+ continue to work as before.
+ Thanks to Eduard Rozenberg for the suggestion.
+
+18-Sep-2012 - v2.12
+ * Added /run to the list of default path exclusions.
+
+27-May-2012 - v2.11
+ * Added /var/lib/NetworkManager to the list of default path exclusions.
+ Thanks to Patrick Volkerding for the suggestion.
+
+05-Nov-2011 - v2.10
+ * Added --allow-overlapping option to permit the package to contain files
+ that overlap with existing packages installed on the system.
+ The default is to permit this behaviour, but if you're using the -Q option
+ as I do to build my packages, you'll find that there's no way to switch
+ the behaviour off whilst building an otherwise Slackware standards
+ compliant package.
+ To use this option you will need to supply it on the command line
+ after '-Q'.
+ * Fixed bug where --delete-overlapping was expecting an input.
+ * To the default path exclusion list, the following paths have been added:
+ /var/spool/cron/cron
+ /dev/bus/
+ /dev/char/
+ /dev/rfkill
+
+25-Sep-2011 - v2.09
+ * Fixed formatting issues with the man pages exposed by a newer version
+ of "pod2man". Thanks to Branko Grubic for the report and the patches.
+ * The /var/log/{packages,scripts}/$PACKAGE entries of the unprocessed
+ package contents (just after slacktrack completes execution of the
+ supplied package build script) were incorrect due to slacktrack not
+ handling symlinks when creating these entries - any symlinks were treated
+ treated as files which caused "removepkg" to emit messages such as
+ ".. no longer exists"
+ slacktrack now uses "makepkg" and "installpkg" to correctly create and
+ handle the /var/log/{packages,scripts} entries.
+ Thanks to Roberto for the report and a good detailed explaination.
+ * Removed /usr/bin/altertrack symlink to /usr/bin/slacktrack. It's
+ been years since altertrack was a separate tool. If you have any
+ scripts still calling "altertrack" -- change them :-)
+ * When deleting perllocal.pod files, look in /usr/lib & /usr/lib64
+ * Warn if any files in the newly built package overlap with other packages
+ that are already installed on the system.
+ * Added -X, --delete-overlapping option.
+ This option deletes any of the overlapping files from the new package.
+ The -Q option now includes the erasing of any overlapping files.
+ * Do not emit the name of the newly built package when displaying the
+ list of package dependencies.
+
+08-Nov-2010 - v2.08
+ * Exclude /var/lib/dhcpcd from being included in the package contents.
+
+18-Dec-2009 - v2.07
+ * Rewrote package_name() function to cater for "old style" package names.
+ Thanks to Jim Hawkins for the bit of sed script.
+ * Prevent /etc/dhcpc, /var/run and /etc/resolv.conf from appearing in
+ the package contents. This is especially useful when your build
+ machine is using dhcpcd to manage its network address.
+
+16-July-2009 - v2.06
+ * Added /lib/udev/devices to the default path exclusion list.
+ Files in here are generated and maintained by udev and should not
+ be included in packages.
+
+02-June-2009 - v2.05
+ * If after removing orphaned *.pyc files, their previous & parent
+ directories become empty, delete the directories.
+
+29-May-2009 - v2.04
+ * Added -Y, --delete-orphaned-pyc option.
+ Within the package contents, if slacktrack finds *.pyc files without a
+ matching *.py file, the *.pyc files will be removed from the package
+ contents.
+ Thanks to Patrick Volkerding for the suggestion.
+ Updated slacktrack(8).
+
+15-May-2009 - v2.03
+ slackdtxt:
+ * Updated to handle .tgz, .tbz, .tlz, .txz file extensions
+ Thanks to Patrick Volkerding.
+ * Renamed --nodeletetgz option in to --nodelete.
+ * Updated slackdtxt(8)
+ slacktrack:
+ * Added /usr/lib64 and /lib64 to the list of known library directories.
+ Thanks to Eric Hameleers for reminding me.
+
+12-May-2009 - v2.02
+
+ This is an interim release to allow slacktrack to work with the
+ additional package compression formats introduced in Slackware v13.
+ The documentation & the 'slackdtxt' utility will be updated at a
+ later date.
+
+ * Renamed --md5sumtgz option to --md5sum because starting at
+ Slackware v13, the package format has been expanded to several
+ other compression types; updated slacktrack(8).
+ * No longer suffix ".tgz" to a package name if the ".tgz" extension
+ wasn't specified. This allows you to specify one of the new alternate
+ package file extensions: .tgz, .tbz, .tlz and .txz
+ * Added /usr/share/slacktrack/ln which is an ln wrapper.
+ This calls /bin/ln with the -f (force) option which allows the
+ time stamp to get updated on symlinks.
+ Thanks to Jim Hawkins for writing this wrapper.
+
+19-Nov-2008 - v2.01
+ * Added /var/cache/ to the default exclude list.
+ This excludes SAMBA's 'browse.dat'.
+ Thanks to Eduard Rozenberg for the suggestion.
+ * Updated 'dvd_libs' example build scripts to use libdvdcss-1.2.10
+ and verified the source URLs for the other components.
+ (You must still download the source yourself).
+
+17-Sep-2008 - v2.00
+ * The 'slacktrack' tool is now what used to be shipped as 'altertrack'.
+ This tool tracks installations directly within a live root file system
+ rather than a pseudo root file system.
+
+ ** Important: This means that you *MUST* now run slacktrack on a
+ devbox only **
+
+ Please read /usr/doc/slacktrack*/RELEASE_NOTES for
+ important details about migrating from the previous version of
+ slacktrack.
+
+
+ * Changed to BSD licence for 'slacktrack' and 'slackdtxt' tools.
+ The only reason it was previously GPL was because this was the licence
+ installwatch used.
+ * Updated documentation & man pages.
+ * A GPG signing key must be specified when using the -G,--gpg-sign option;
+ it will not fall back on the default. This is because the code
+ to parse the command line operators doesn't work. I checked
+ the supplied examples for getopt and even they don't work!
+ (Perhaps it used to work with older versions of bash?)
+ * Added -P, --delete-perllocalpod option.
+ This deletes any 'perllocal.pod' found within the package's /usr/lib.
+ perllocal.pod files should only be included with the Slackware 'perl'
+ package.
+ * The -Q (set options to build a Slackware compliant package) option now
+ sets the -P, --delete-perllocalpod options.
+ * Removed --froot operator. This used to run the 'fakeroot' daemon
+ and LD_PRELOAD the fakeroot library to make your user environment
+ appear as if were root, with the intention of allowing package utilities
+ to set ownerships of files/dirs -- an ability allowed only for root.
+ However, since slacktrack needs to be run as root to make a useful
+ package (it's unlikely you'd use slacktrack to track files in a
+ non-root location, eg /mypackages/), then this option is defunct.
+ * Removed --with-scratchbox. This deleted the /dev and /home
+ directories that used to find their way into early ARMedslack packages.
+ ARMedslack has not used scratchbox in years, and I can't imagine
+ anybody else ever used this option!
+ * Build script examples are now bundled with the package rather than
+ being on a separate web site (since there's no cholestrol
+ from installwatch)
+ * Added "/dev/input$|/dev/input/|/dev/.udev/|/dev/.udev$" to the default
+ exclude list because udev is now keeping some live data in there.
+
+08-Feb-2008 - v1.33 - build 1 [ Not released ]
+ * Replaced installwatch with 'libsentry' - a fork of installwatch
+ by Gilbert Ashley.
+
+29-Jun-2007 - v1.32 - build 1, Slackware 12.0 special version.
+ * Fixed a bug where if --stripallexec was used, it wasn't stripping
+ all ELFs (.so, bins & .a files).
+ * Replaced slacktrack script with a dummy for the release of
+ Slackware 12.0. The new *at-style functions that coreutils 6.7+
+ are not tracked by installwatch, so chown, chmod et al do not work.
+ The real slacktrack script (if you wanted to use it) is named
+ /usr/bin/slacktrack-real
+
+05-May-2007 - v1.31 - build 2
+ * Fixed a bug in altertrack's --touch-filesystem-first code.
+ See docs/ChangeLog.altertrack.
+ * Updated slacktrack(8): -Q option now states that files in binary
+ directories are chown root:root not root:bin.
+ Thanks to Eduard Rozenberg for noticing that.
+
+31-Mar-2007 - v1.31 - build 1
+ * When gzipping man & info pages, force compression (gzip -f)
+ * Applied Fred Emmott's portable patch to installwatch to make it
+ work on 64bit machines.
+
+19-Feb-2007 - v1.30 - build 1
+ * Move installwatch library from /usr/lib/installwatch.so
+ /usr/lib/installwatch-slacktrack.so
+ This prevents an installation conflict with checkinstall.
+ Thanks to Henrik Carlqvist for the suggestion.
+
+04-Apr-2006 - v1.29 - build 1
+ * Added new option, -m|--chown-bins-root-root
+ This sets ownerships of files and directories in the standard Slackware
+ binary directories to 'root:root'.
+ This change is for Slackware v11 - binary directories are no longer
+ chown root:bin.
+ * The -Q option now sets -m rather than chowning root:bin.
+ If you want root:bin, specify the -f and -e options. The command would
+ look something like this:
+
+ # slacktrack -Q -fe -p moose-1.0-i486-1.tgz ./moose.build
+
+ * Added /media,/srv and /selinux to the 'watch' patch exclusion list
+ (any changes to these paths will be excluded from the package).
+ Updated slacktrack(1) with the new paths.
+
+14-Nov-2005 - v1.28 - build 1
+ * Fixed a bug where any man page symlinks broken by gzipping were not
+ being repaired.
+ Thanks to Andrei Levin for the bug report.
+
+22-Sep-2005 - v1.27 build 1
+ * Rewrote the slack-desc file to explain what slacktrack actually does
+ in simple words :-)
+ * Added /var/lib/rpm to list of excluded paths. This allows you to
+ do some seriously kludgey stuff like build from a source RPM and
+ install the binary RPM as part of the build script.
+ Very useful sometimes - docbook is an example :-)
+ * Fixed bug where if a temporary directory was manually specified with -T,
+ its contents were tracked by installwatch. Manually set temporary
+ directories are now in installwatch's exclude list.
+ Thanks to Gufo for reporting this.
+ * slacktrack will now return error code 6 and abort if it finds the
+ temporary directory (either chosen automatically or selected via the
+ -T|--tempdir option) already exists. This is to prevent slacktrack
+ from wiping user data without any warning.
+ slacktrack does not create a sub directory within the specified area;
+ it was never designed to do so, so this is the best option.
+ * Modified man page to reflect the above change, and added error code 6
+ to the error code section.
+ Thanks to Gufo for suggesting this change.
+
+22-Jul-2005 - v1.26 build 1
+ * Added /opt/kde/man to the list of man page directories.
+
+08-May-2005 - v1.25 build 1
+ * Renamed internal string 'VERSION' to 'SLACKTRACKVERSION' as it's
+ too much of a generic name and can cause confusion as it's exported
+ to the build script/environment.
+
+21-Mar-2004 - v1.24 build 1
+ * Added /sys to the list of excluded paths
+ * Fixed bug with chowning files that was introduced in v1.19.
+ Files with brackets in the name would get interpreted by bash. Now
+ these names are enclosed within '' to prevent this.
+ * Trimmed down --help text a little - it's too wordy.
+ * Added a patch to installwatch which was posted by Alexander Kern on the
+ checkinstall mailing list:
+ It adds simply "utimes" and "setxattr" to the list of
+ intercepted functions.
+ - Please note, however, that I am aware that there seems to be a problem
+ with installwatch on Slackware-10.1, although it does not show up when
+ building all software. I am looking to replace installwatch with
+ something specifically for slacktrack.
+
+09-Dec-2004 - v1.23 build 1
+ * Upgraded to installwatch-0.7.0beta4 from checkinstall-1.6.0beta4
+ * Fixed bug where you were informed that there were "orphaned" libraries
+ and dependencies upon installed packages, but the list was blank.
+ This was because the file contained spaces and therefore passed the
+ if [ -s ] check.
+
+16-Nov-2004 - v1.22 build 1
+ * Fixed a bug where if --notidy was specified and slacktrack/altertrack
+ failed to track any changes, the temporary workspace would be deleted.
+ This became a bug when I introduced $SLACKTRACKSCRATCHDIR; if a build
+ fails then the developer will be interested in looking at the source
+ tree which should always be preserved by --notidy.
+ * /usr/local/bin, /usr/local/sbin and /usr/X11R? directories & files
+ contained within will now:
+ - be chown root:bin
+ - be stripped (with the same strip option as the major bin directories)
+ * man pages in /usr/X11R?/man will now be compressed.
+ * Updated slacktrack(8) to reflect the above two changes.
+ * Fixed a typo in --help and added a suggested usage line.
+ * If an incorrect parameter is specified then --help is directed to STDERR.
+ * If no parameters are specified (or there has been no package name
+ specified) then the usage message is directed to STDERR.
+ * Updated the TODO list.
+ * Updated the OVERVIEW document (last update was 09-Dec-2003)
+ - Added a couple of new architectures (official & unofficial ports)
+ and made a note about i586 binary packages
+ - A couple of other minor edits.
+
+26-Aug-2004 - v1.21 build 2
+ * Tidied up slacktrack.SlackBuild
+ * Updates to altertrack
+
+19-Jun-2004 - v1.21 build 1
+ * Only strip debugging symbols (strip -g) from object files in .a archives
+ because --strip-unneeded tends to render many object files unusable.
+ If you're sure you know what you're doing and want to use strip
+ options other than -g, then I suggest doing this inside your build
+ script or (if using altertrack) in your post build script.
+ Updated slacktrack(8) to reflect this.
+ * Use strip -p to preserve dates/time stamps.
+ * Fixed a typo in the package info display prior to building the package.
+
+31-May-2004 - v1.20 build 1
+ * Changed chown uid.gid to uid:gid
+
+25-Mar-2004 - v1.19 build 1
+ * With the recent version of the coreutils package in Slackware-current
+ (coreutils-5.2.1), chmod no longer preserves setuid bits. This means
+ that if you elect to chown root.bin the binaries, you lose setuid.
+ I have implemented a work-around which works with both the new and old
+ coreutils chown.
+
+03-Mar-2004 - v1.18 build 1
+ * Strip archive files (.a) with --strip-unneeded, as using strip without
+ this option causes the contents of some archive files to be unusable.
+ Thanks to longname@sezampro for reporting it.
+
+12-Feb-2004 - v1.17 build 1
+ * Added --froot option to start the fakeroot server prior to setting
+ ownerships and so on. This may be helpful if you are not root on
+ the machine where the packages are being prepared. However, if the
+ build script or 'make install' sets its own ownerships, these will
+ be lost because the fakeroot server is not started until *after* the
+ build script finishes. The reason for this is that fakeroot can make
+ some configure scripts fail. If you know that the configure script
+ you are using does *not* fail under fakeroot, I suggest that you still
+ use fakeroot ./trackbuild.xxx
+ -- Please note that due to the path to the fakeroot libraries, slacktrack
+ only works with fakeroot-0.8.3 and up
+ You can download the latest version of a fakeroot Slackware package
+ builder from http://www.slackware.com/~mozes --
+ * Upgraded to installwatch-0.7.0beta3 from CheckInstall 1.6.0beta3
+
+12-Dec-2003 - v1.16 build 1
+ * Updated docs/OVERVIEW
+ * Updated docs/TODO
+ * Bumped up version number for release.
+
+10-Dec-2003 - v1.15 build 5
+ * Tidied up slacktrack.SlackBuild
+ Most of the recent changes have been in altertrack (bug fixes) which
+ is why the version of slacktrack itself hasn't been updated.
+ The usr/doc/slacktrack-version directory is now
+ usr/doc/slacktrack-version_build
+ because (at present) the build number is important to this project
+ because it changes more than the major slacktrack version number.
+ * Mentioned installwatch segfaulting in the FAQ.
+
+01-Nov-2003 - v1.15(release)
+ * altertrack is now included within the binary .tgz package because
+ I'm satisfied that it is just as safe as protopkg, and it enables you
+ to build packages from .build scripts that do not work with
+ slacktrack/installwatch.
+
+29-Oct-2003 - v1.15rc1
+ * If running under fakeroot then remove fakeroot from the list of
+ dependencies (it's included because it's LD_PRELOADed)
+ (suggested by Emanuele Vicentini).
+ Patch from Emanuele Vicentini:
+ * Redirect file descriptor 2 to 1 so that the slacktrack log file
+ contains anything sent to STDOUT.
+
+22-Oct-2003 - v1.15
+ * Added --showdeps option to log to screen and a log file what
+ _installed_ Slackware packages your new package relies upon.
+ The purpose of this for interest only but I find it useful to ensure
+ I haven't just built a package on a box that Xfree86 installed
+ and I intend to install and use the package on a box that does not,
+ when the package has linked against X's libraries.
+ Using this option will also flag up 'orphaned' libraries (ones that
+ do not belong to an installed package, which is especially handy
+ if you're going to be distributing a package).
+ * Added another question to FAQ.
+ * Bomb out if /var/log/packages or /var/log/scripts is missing.
+
+20-Oct-2003 - v1.14 [beta only]
+ * When stripping shared objects (.so files), look for 'shared' rather
+ than 'shared objects' (in the output from 'file') as this was causing
+ some files not to be stripped (PHP is an example).
+ * Added --mpopts option to allow the inclusion of additional options
+ (e.g. --prepend) to Slackware's 'makepkg' program.
+ * Fixed bug where by the .txt description file wouldn't be created if
+ you had specified a seperate build store directory that didn't end
+ with a /
+ * No longer create the /install directory because if your build script
+ fails to create any files then you don't see the warning slacktrack
+ gives you. I could code around this but I think it's cleaner this way.
+ * Added /root to the list of directories that will not be included within
+ the package. This should help with using ccache when compiling as root.
+ You should still see docs/FAQ for help with non-root users.
+ It also helps with building CPAN modules.
+ * Updated the FAQ with information about using perl -MCPAN -eshell
+ (turn off logging and the CPAN interface console will work)
+ * Fixed bug where by gzipping info pages wouldn't gunzip .bz files first
+ * Forked slacktrack into another script named 'altertrack'. This works
+ in a similar fashion to Pat's 'bp' and David Cantrell's 'protopkg' in
+ that it compares the differences between the file system before and
+ after 'make install', rather than using installwatch.
+ This script is available only in the source distribution and is
+ totally unsupported (but it works for me). There is an example
+ build script contained within the source in the 'examples-altertrack'
+ directory.
+ * Moved fakeroot's build script (and source) out of slacktrack's source
+ and on to http://www.slackware.com/~mozes because it's
+ more useful there.
+
+01-Oct-2003 - v1.13
+ * Warn if /install/slack-desc not found or 0 bytes
+ * The package's /install directory is now created by slacktrack
+ _before_ it executes your .build script. This saves you a line
+ in your .build script, plus it's required in order
+ to meet Slackware package standards (because 'slack-desc' lives
+ within /install). However, if you do not wish to have a /install
+ directory within your final package, you may delete it within
+ your .build script ( rm -rf ${SLACKTRACKFAKEROOT}/install )
+ * Updated dependency checking code so that it can handle packages
+ that begin with the same name (e.g. 'glib' 'glib2').
+ * Updated the fakeroot build scripts for version 0.7.8
+ Patches from Emanuele Vicentini:
+ * Added -Q, --standard options that specifies all command line switches
+ required to create a .tgz file that complies with the Slackware standard.
+ * Added -G, --gpg-sign option that will sign the resulting .tgz
+ package file with the default user's GnuPG key and placed the
+ detached, armored signature (.asc file) in the package store
+ directory.
+ * Fixed the value of GZINFO (which should be "No" according to the
+ man page but was "Yes")
+ * Updated man pages, typos fixed and so on.
+
+ The easiest way to build a package is now:
+ # slacktrack -Qp foo-1.13-i486-1.tgz ./foo.build
+
+11-Jul-2003 - v1.12
+ * Added -D, --md5sumtgz option that will create an MD5sum of
+ the resulting .tgz package file.
+ * Fixed problem with checking the exit code from getopt
+ (reported by Emanuele Vicentini).
+ * Added a preemptive FAQ
+ * Merged Patrick's changes of slacktrack.SlackBuild into mine
+ slacktrack.SlackBuild now also creates its own slacktrack-*.txt file
+
+22-Jun-2003 - v1.11r2
+ * I'd missed single quotes from a few find commands - fixed.
+
+02-Jun-2003 - v1.11
+ * -S, --stripallexec will now strip .a (archive) files.
+ * -A, --striparchives option added. This option strips .a archives.
+ Suggested by Patrick Volkerding.
+ * slacktrack.SlackBuild no longer includes the large collection of
+ example scripts into the resulting package .tgz; they're now
+ maintained in a separate archive (slacktrack-examples-v??.tar.gz)
+ available from http://www.slackware.com/~mozes
+
+28-May-2003 - v1.10r2
+ * If deleting 'usr/info/dir' then append this info to the log.
+
+22-May-2003 - v1.10
+ * Before gzipping man or info pages we now find any bzip2 (.bz2) files
+ and unpack them. I have found that BitchX installs BitchX(1) as
+ a bzip2 file. There is no slacktrack option to turn this feature off
+ because if we gzip the bzip2'd man page, the man program won't
+ work with the file.
+ * Added -K, --delete-usrinfodir option. If this option is specified
+ then slacktrack will delete the file 'usr/info/dir' if it is
+ found in the package.
+ This file is a special file used by the 'info' program. To quote
+ texinfo's 'dir' file:
+ "This (the Directory node) gives a menu of major topics."
+ Many programs create their own 'info' file. However, using slacktrack
+ (or even a clean SlackBuild script), any such attempts to create
+ an up to date 'info' file result in the file only containing
+ information about the particular program (or set of programs)
+ you have just compiled.
+ Therefore you will usually want to delete this file from your
+ package so as to avoid overwriting the system version when you
+ install your new package.
+ The default is not to delete usr/info/dir.
+ * As an example, I typically invoke slacktrack as:
+ # slacktrack -gfenzKSUIp package-1.00-i386-1.tgz ./package.build
+
+
+16-May-2003 - v1.09
+ * Added exported variable: SLACKTRACKSCRATCHDIR
+ This variable points to a 'scratch' dir inside slacktrack's temporary
+ path. Should they wish to do so, the authors of the build scripts
+ can use this directory to save them 'managing' their own temporary
+ directories where they unpack the source archives and so on.
+ This directory is subject to the same conditions as the rest of the
+ slacktrack temporary path -- it will remain if --notidy is specified.
+ * Added paragraph in slacktrack(8) that talks about the exported environment
+ variables.
+ * Now use date +%s to create more randomly named temp directory for installwatch
+ This reduces the possibility of conflicting with another user who is
+ running slacktrack on the same system.
+ * Modified afio.build to demonstrate using ${SLACKTRACKSCRATCHDIR}
+ * Modified tf.build to use ${SLACKTRACKSCRATCHDIR} & to prevent it from
+ confirming the compile-time settings with the user.
+ * Tidy up of the build scripts in the docs dir.
+ * slacktrack(8) & slackdtxt(8) release dates now always in sync with
+ their respective scripts.
+
+07-May-2003 - v1.08r3
+ * Updated a few docs
+ * Fixed a comment typo in the slacktrack script
+ * Tidy up of 'SlackBuild' script
+ * Other misc tidying.
+
+03-May-2003 - v1.08r2
+ * If the command line/script provided exits with an error code we now
+ display the error code as well as a warning message.
+ * Moved slacktrack and slackdtxt to /usr/bin rather than being in
+ /usr/sbin. This is because we can use slacktrack with 'fakeroot'
+ from the Debian distribution. fakeroot fakes root privileges, thereby
+ allowing slacktrack to chown correctly. Therefore we can sensibly
+ use slacktrack as user other than root.
+
+ To use slacktrack with fakeroot you could do this
+ # fakeroot ./trackbuild.fetchmail
+
+ less through the resulting package .tgz to verify that the permissions
+ are what they ought to be. Obviously there will be some issues with
+ using fakeroot but it should be pretty useful for users without root
+ access.
+ I have packaged up fakeroot and you may download it at
+ http://www.slackware.com/~mozes
+ I have included by fakeroot build script within slacktrack's source
+ ball - slacktrack/misc/fakeroot/
+
+28-Apr-2003 - v1.08
+ * Added -N, --strip-prog to allow the user to specify the location
+ of the strip binary. This allows me to start cross compiling
+ stuff with slacktrack stripping the binaries.
+ * Renamed my wrapper scripts from 'SlackBuild' to 'trackbuild' to
+ avoid any confusion & updated docs to match.
+ * If specifying an alternate package store dir, now suffix the path
+ with a /
+ * Now reports size of .tgz if a .tgz is built
+ * No options are 'Advanced' - they are now just options
+ * Added -R, --run-after facility to make slacktrack execute a given
+ command prior to running makepkg. The purpose of this is to allow
+ the user to specify a program such as mc (Midnight Commander) to
+ inspect the package directory contents and possibly make changes
+ before slacktrack creates the .tgz
+ [] Note: The CWD is changed to the package's root directory before
+ the external command is executed. This allows you to specify
+ -Rmc and have Midnight Commander load and automatically
+ display the root dir of the package.
+ * -T wasn't accepting the specified path. Fixed.
+ * -g,--chmod644docs also now does chown -R root.root /usr/doc. I am finding
+ I need to do this in build scripts a lot so I figured since I'm already
+ chmod 644ing I may as well just chown them to root since they always
+ are in Slackware packages anyway !
+
+16-Apr-2003 - v1.07
+ * Added the facility to gzip info pages & updated slacktrack(8) to match.
+ -I, --gzinfo
+ -W, --extra-infodir <path>
+ -F, --gzinfo-no-symfix
+ * Switched @uksolutions email addresses in example build scripts with
+ @polplex.co.uk
+ * Added two build scripts for GNU VCD Imager into the docs/examples/non-slackware
+ directory. There are two scripts:
+ vcdimager.build -- this is for use with slacktrack
+ vcdimager.SlackBuild -- this is a 'clean' SlackBuild script
+ that installs the package into a clean
+ dir by doing make DESTDIR
+ The purpose of having these two scripts is for anybody who is
+ interested in building their own packages; it enables you to
+ compare and contrast the differences... or something :)
+
+01-Apr-2003 - v1.06
+ * --extra-libdir, --extra-bindir, --extra-mandir added to allow
+ the user to specify additional directories that slacktrack should
+ consider when stripping binaries and gzipping man pages.
+ Note that any binary directories specified by --extra-bindir
+ will NOT be chown root.bin
+ Suggested by Darren Austin
+ * No longer chown root.bin in /usr/local/{sbin,bin}/
+ as it's not the Slackware standard to chown root.bin in any dirs other
+ than /sbin, /bin, /usr/bin & /usr/sbin
+
+26-Mar-2003 - v1.05
+ * Now considers usr/local for man page, binary and .so files after
+ Darren Austin gave a convincing argument as to why one may wish to
+ use /usr/local
+
+22-Mar-2003 - v1.04-build-2
+ * Moved Change Log details into separate file - 'ChangeLog.slacktrack'
+ to save cluttering the slacktrack script.
+ * Added zlib build script to the list of Slackware example build scripts
+ This script downloaded the Slackware bits and also patches in the
+ security patch from OpenPKG.
+ * Added NVIDIA_GLX-1.0-4191 and tinyfuge example slacktrack build scripts
+ * Fixed a few typos and grammar problems in the docs
+ * Tidied up a few comments & code in the slacktrack script
+ - No new features added.
+
+10-Mar-2003 - v1.04
+ * Added --stripallexec option to strip any unstripped ELF executable files
+ in the entire package directory. This means that slacktrack will find all
+ files in non-standard Slackware directories such as /opt.
+ * Added 'short' command flags for the advanced options.
+
+02-Mar-2003 - v1.03
+ * Make sure we have specified a package name before proceeding
+ * Bomb out & tidy up if no files or dirs are found in /var/tmp/slacktrack/TRANSL/
+ this saves makepkg building a package of the current directory & it also
+ indicates that installwatch failed to track any activity, thus has no files
+ to package.
+ * Fixed problem with the location of installwatch's log file.
+ * Lots of error checks
+ * Exit codes now have meaning; read slacktrack(8) man page.
+ * If build store dir doesn't exist then change it to /tmp rather than
+ creating it without warning.
+
+01-Mar-2003 - v1.02
+ * Added --chmod644docs option
+ * Renamed SLACKTRACKPSEUDODIR to SLACKTRACKFAKEROOT because it makes more
+ sense.
+
+28-Feb-2003 - v1.01
+ * Stopped dumping all output to /dev/null when gzipping man pages
+ as this doesn't always work
+ * Added code to fix broken symlinks caused by gzipping man pages
+ Added --gzman-no-symfix command line option to prevent this behaviour
+ * Added --chown-bdirs-root-bin & chown-bfiles-root-bin (-e,-f) options
+ to chown root.bin the system binaries installed into /usr/bin and so on
+ This behaviour is specified in Pat's 'slack-tools' README file.
+
+22-Jan-2002 - v1.00
+ * Created
diff --git a/source/d/slacktrack/slacktrack-project/docs/FAQ b/source/d/slacktrack/slacktrack-project/docs/FAQ
new file mode 100644
index 000000000..98ea7d7cd
--- /dev/null
+++ b/source/d/slacktrack/slacktrack-project/docs/FAQ
@@ -0,0 +1,234 @@
+################################################################
+# Document: FAQ
+# Purpose : Frequently asked questions
+# Author..: Stuart Winter <mozes@slackware.com>
+################################################################
+# It's small at the moment but if I get any repeated
+# or potentially repeated questions then they'll be added
+# here.
+################################################################
+
+
+Questions
+---------
+
+1. My build script places files into /home, but these are not
+ included in the package created by slacktrack. Why?
+
+2. Do I really have to remove the existing package before
+ building a new version with slacktrack ?
+
+3. I want to build a package of DVD libraries and players
+ but the players depend on the libraries being installed
+ first. How can I build such a package with slacktrack?
+
+4. I find that when building packages with slacktrack, a number of
+ files are appearing in the package that do not belong there. Why?
+
+5. What does slacktrack's --touch-filesystem-first option do?
+ why would I need it?
+
+6. I can't compile Perl CPAN modules via perl -MCPAN -eshell
+ Why ?
+
+7. I'm using Slackware v13 (or greater) and I want to create
+ package files using one of the other compression methods.
+ How can I do that?
+
+8. After completing a build using slacktrack, I see
+ "You have mail in /var/mail/root"
+ but I have no new email.
+
+Answers
+-------
+
+Q1. My build script places files into /home, but these are not
+ included in the package created by slacktrack. Why?
+
+A1. slacktrack (by design and thus default) excludes /home
+ from being included within the package. The reason for this
+ that typically no package shipped should ever contain
+ data within /home.
+
+Q2. Do I really have to remove the existing package before
+ building a new version with slacktrack ?
+
+A. No (see my zlib example), but in the majority of cases,
+ I'd advise that you do.
+
+ The reason that my example trackbuild scripts remove the
+ existing package first (or bomb out) is because some
+ package installations (makefiles) will not install a
+ new file onto the filesystem if it's identical to the
+ one in the source archive. This means that slacktrack
+ will not notice any change in the before and after picture
+ of the filesystem; thus your resulting package may
+ be missing some files.
+
+ The way to work around this is:
+ 1. removepkg the package prior to building;
+ 2. Use the --touch-filesystem-first option;
+ But this option is not recommended since it destroys the
+ time stamp information on your system.
+ This option should only be used by experts using a disposable
+ OS installation.
+ Please see FAQ question 5.
+
+ It's worth noting that Slackware's 'removepkg' program
+ won't always remove all files (especially config files
+ which are packaged as /etc/file.new and are renamed to
+ /etc/file by install/doinst.sh).
+
+ It shouldn't be too much of an issue though. If it's a
+ brand new piece of software that you are building from
+ scratch then installwatch will pick up all new files.
+ If you're rebuilding a Slackware package using a
+ .build script from the source tree then it's worth
+ browsing the package's contents ( # cat /var/log/packages/lftp-*
+ for example ), then running 'removepkg' and looking at its
+ output. If there are any remaining config files then either
+ move them to a safe place or delete them before
+ building your package with slacktrack.
+
+ In general though you shouldn't have any problems.
+
+
+Q3. I want to build a package of DVD libraries and players
+ but the players depend on the libraries being installed
+ first. How can I build such a package with slacktrack?
+
+A. There are two ways.
+ 1. You either write build scripts for each individual
+ library and create packages for each. Once the packages
+ have been built, you install them prior to building
+ the player.
+ You then unarchive all packages into a temporary
+ directory and run makepkg over it.
+ 2. Use slacktrack and build them all one after another as
+ you no doubt have originally attempted.
+
+ I have included example build scripts for a DVD library
+ package within slacktrack's source archive.
+
+
+Q4. I find that when building packages with slacktrack, a number of
+ files are appearing in the package that do not belong there. Why?
+
+A. The way that slacktrack works is that it:
+ [a] takes a snapshot of the files and directories on the file system;
+ [b] runs the build script
+ [c] makes another snapshot of the files & dirs on the file system;
+ [d] compares the two snapshots and determines the differences
+ [e] the differences between the two snapshots constitute the package
+ contents
+
+ The problem with this approach is that other running programs can
+ make modifications to files & dirs on the file system during the
+ build/compilation process. slacktrack will consider these modifications
+ to be part of the package -- slacktrack does not directly track what the
+ build process does: it *only* compares the differences between the
+ file system snapshots.
+
+ Major culprits for this are:
+ cups
+ crond (running cron jobs)
+ Window Managers and X
+
+ When using slacktrack you are advised to reduce the number of
+ processes to the minimum, and try to ensure that there are no processes
+ running which will modify the file system during the build process.
+
+ If you cannot do this then you there are a number of work arounds:
+ [a] Using the -x (--exclude) operator.
+ With this operator you can specify a list of
+ paths to exclude from the file system snapshots, thus excluding them
+ from the resulting package.
+ [b] Use the -R (--run-after) operator.
+ With this operator you can specify a command that will be run after
+ slacktrack has compiled the package contents.
+ You may wish to run 'mc' (Midnight Commander) or perhaps just a 'bash'
+ shell; this will enable you to inspect and modify the contents of the
+ package prior to it being turned into a package file.
+
+Q5. What does slacktrack's --touch-filesystem-first option do?
+ why would I need it?
+
+ This option touches all files this pre-set location on the host's
+ filesystem:
+ /opt /bin /boot /dev /etc /install /lib /sbin /usr /var
+
+ It *excludes* by default '/lib/udev/devices' since this contains
+ live device data that doesn't take kindly to being touched.
+ You may see errors from 'touch' about certain binaries, including
+ /sbin/vol_id because this is a symlink into /lib/udev/devices.
+
+ This will touch every file within those directories, destoying all the
+ timestamp information.
+ This is intended to be used on a throwaway development installation
+ that's reinstalled daily or more often. Builds will often leave
+ residue strewn about, so don't use this on your "good" machine and
+ think you're managing it properly. :-)
+
+ The reason behind this is that if you run slacktrack and your build
+ partially fails, then it will leave some data on the filesystem.
+ You then fix the problem and re-try: this time the build may succeed.
+ However, if the original data on the filesystem from the first
+ part-failed build has *not* changed (ie if it was some static data that
+ was copied with cp -a (preserved time stamp & ownership)) between
+ the first part-failed build and second successful build, slacktrack
+ will miss this data from the final package.
+
+ This option updates the file stamps contained within standard package
+ directories, therefore allowing slacktrack to detect changes
+ (even if the data contains an *old* time stamp from 1982, it will still
+ detect the difference).
+
+***** This is an expert option: Please don't use this option unless you do
+ not care about your operating system installation *****
+
+
+Q6. I can't compile Perl CPAN modules via perl -MCPAN -eshell
+ Why ?
+
+A. If you get this message:
+ Unable to get Terminal Size. The TIOCGWINSZ ioctl didn't work.
+ The COLUMNS and LINES environment variables didn't work.
+ The resize program didn't work.
+
+ the answer is to tell slacktrack to turn off logging.
+ eg:
+ # slacktrack -Qnp foo-1.0-i486-2.tgz ./foo.build
+
+Q7. I'm using Slackware v13 (or greater) and I want to create
+ package files using one of the other compression methods.
+ How can I do that?
+
+A. It is 'makepkg' from the 'pkgtools' package which handles
+ the compression, based upon the extension of the package
+ file name supplied to it.
+
+ The compression methods & file names are:
+
+ .tgz - Gzip
+ .tbz - Bzip2
+ .tlz - LZMA
+ .txz - XZ
+
+
+ Examples:
+
+ # slacktrack -Qp foo-1.0-i486-1.tgz ./foo.build
+ # slacktrack -Qp foo-1.0-i486-1.tbz ./foo.build
+ # slacktrack -Qp foo-1.0-i486-1.tlz ./foo.build
+ # slacktrack -Qp foo-1.0-i486-1.txz ./foo.build
+
+
+Q8. After completing a build using slacktrack, I see
+ "You have mail in /var/mail/root"
+ but I have no new email.
+
+A. This is because you used the '--touch-filesystem-first' or
+ '--touch-filesystem-faster' option at build time.
+ This option has touched all of the files on the file system, which
+ refreshes their date stamp. The mail notification system works only on
+ the date stamp of the mail spools, hence it triggers the message.
diff --git a/source/d/slacktrack/slacktrack-project/docs/INSTALL b/source/d/slacktrack/slacktrack-project/docs/INSTALL
new file mode 100644
index 000000000..8b74c9f18
--- /dev/null
+++ b/source/d/slacktrack/slacktrack-project/docs/INSTALL
@@ -0,0 +1,9 @@
+
+In order to build slacktrack:
+
+ # ./slacktrack.SlackBuild -i
+
+This will create a Slackware package of slacktrack
+and install it.
+
+The resulting package will reside in /tmp.
diff --git a/source/d/slacktrack/slacktrack-project/docs/OVERVIEW b/source/d/slacktrack/slacktrack-project/docs/OVERVIEW
new file mode 100644
index 000000000..fb99b247d
--- /dev/null
+++ b/source/d/slacktrack/slacktrack-project/docs/OVERVIEW
@@ -0,0 +1,595 @@
+##############################################################################
+# Document: OVERVIEW
+# Purpose : Provide an overview of the Slackware package system incorporating
+# the use of 'slacktrack'
+# Please note that this is *not* a guide to the use of slacktrack;
+# the man page and SlackBuild scripts in the 'examples' directory
+# aim to fulfill that requirement.
+# Date....: 15-May-2009
+# Author..: Stuart Winter <mozes@slackware.com>
+# Homepage: http://www.slackware.com/~mozes
+##############################################################################
+
+
+CONTENTS:
+---------
+1.0 Preamble
+2.0 Slackware packages
+ 2.0.1 Format of official Slackware packages
+ 2.0.1.1 Package names
+ 2.0.1.2 Version numbers
+ 2.0.1.3 Architectures
+ 2.0.1.4 Build numbers
+ 2.1 An overview of the creation of official Slackware packages
+ 2.1.1 'Clean' and 'dirty' builds
+ 2.1.1.1 Clean builds
+ 2.1.1.2 Dirty builds
+ 2.1.1 SlackBuild and .build scripts
+ 2.1.1.2 SlackBuild scripts
+ 2.1.1.3 .build scripts
+ 2.2 slacktrack in the scheme of things
+ 2.2.1 Using slacktrack with official .build scripts
+ 2.2.2 Writing your own .build scripts for slacktrack
+ 2.2.2.1 Making use of slacktrack's environment variables
+3.0 slacktrack in operation
+ 3.1 How slacktrack finds which files have been installed
+4.0 Example scripts
+ 4.0.1 non-slackware example build scripts
+ 4.0.2 slackware example wrapper build scripts
+5.0 Known problems/features of slacktrack
+6.0 New features
+7.0 Licence
+
+
+
+1.0 Preamble
+ ---------
+
+I used to work for a company that provided web hosting and shell accounts.
+When I started there were a number of shell servers all running various
+releases of RedHat Linux, in various states of repair. I managed to convince
+the management to let me try Slackware on there instead because I have a much
+stronger understanding of how to maintain and build server using the
+Slackware distribution. This trial went well and within a few months all
+servers were converted to Slackware version 8.1.
+
+In order to ease the speed of installation (and to prevent against
+forgetting to install or configure something critical), I wrote a
+set of post installation scripts that upgraded Slackware packages,
+configured numerous config files and copied pre-compiled software
+(such as courier IMAP) onto the new system.
+For other software that I could not simply copy, I'd compile it on the
+new server.
+
+However, it soon became clear that due to security updates and so on,
+it became incredibly time consuming (not to mention seriously boring)
+to compile PHP, Apache and so on on every server.
+
+At this point, I began to investigate how to create packages for Slackware.
+
+
+2.0 Slackware packages
+ ------------------
+
+ The Slackware Linux distribution consists of a variety of 'packages'
+ that make up the distribution.
+
+ Traditionally, all packages are in '.tgz' format (a gzipped tar archive).
+ Starting with Slackware v13, new compression formats are supported which
+ are represented by three additional file extensions:
+
+ .tgz - Gzip
+ .tbz - Bzip2
+ .tlz - LZMA
+ .txz - XZ
+
+ In this document, we use the file extension '.t?z' to represent
+ one of the above file formats.
+
+ Once you have initially installed Slackware from the installer screen,
+ you have the facilities to install, remove or upgrade new or existing
+ packages using the package management tools:
+
+ installpkg <package.t?z> - install 'package.t?z'
+
+ upgradepkg <package.t?z> - upgrade existing 'package' with the
+ new version specified at the command line.
+
+ removepkg <package> - remove specified package
+
+
+ Whilst the Slackware package system is not especially feature rich,
+ Slackware's user base (including me) like it because it is simple.
+ If we want to write our own package utilities then we can easily do so
+ by examining the existing package tools and querying and amending the
+ package database (text files).
+
+ 2.0.1 Format of official Slackware packages
+ -------------------------------------
+
+ In Slackware 8.1 and up, each package file is named as follows:
+
+ packagename-version-architecture-buildnumber.t?z
+
+ 2.0.1.1 Package names
+ -------------
+
+ The package name is either the name of the single program
+ or the name of a collection of utilities that fall under
+ a single umbrella.
+ For example:
+ autoconf-2.54-noarch-1.tgz
+
+ That is the name of the autoconf package I have on my
+ Slackware 8.1 box.
+ 'autoconf' is the name of the the entire collection of
+ binaries and associated documents that are extracted from
+ the autoconf source distribution archive.
+
+ However, if we consider another example:
+ tcpip-0.17-i386-15.tgz
+
+ There is no single piece of software called 'tcpip'.
+ This package contains a number of associated utilities
+ written by different authors but bundled into one single
+ 'package'.
+
+ 2.0.1.2 Version numbers
+ ---------------
+
+ If the package is the name of a particular piece of software
+ such as 'autoconf' from the example above, then the version
+ number represents the version number that its authors distribute.
+
+ If the package is a 'bundle' such as 'tcpip' then the version
+ number increases as and when you add a new piece of software to
+ the package, or upgrade a particular piece of major software
+ contained within the package.
+ For example, with 'tcpip' above, the 0.17 refers to the version of
+ Linux Netkit. However, there are other programs included within
+ the Slackware tcpip package that are not part of 'Linux netkit'.
+
+ 2.0.1.3 Architectures
+ -------------
+
+ The architecture is just that -- it tells you which architecture
+ the package is for.
+
+ The current values in use are:
+
+ ----- [ Official Slackware architecures ]
+
+ noarch - Architecture independent files such as config files
+ i386 - packages for the x86 (Slackware v8.1 & 9)
+ i486 - packages for the x86 (Slackware 9.1+)
+ i586 - packages for the x86
+ i686 - packages for the x86
+ s390 - packages for the IBM s/390 mainframe
+ arm - packages for the ARM architecture
+
+ Note: Whilst Slackware v10 is primarily built for i486, you may
+ find that there are some packages whose architecture versions
+ are higher than i486. This is for two reasons:
+
+ [a] There is no source for the package - it is a repackaged
+ binary distribution (SUN's j2sdk is an example).
+
+ [b] The package is not required or otherwise not suitable for
+ earlier revisions of the architecture (this is especially
+ the true with ARM and SPARC).
+
+ ----- [ Unofficial ports of Slackware ]
+
+ sparc - packages for the SUN Sparc architecture
+ powerpc - packages for the PowerPC architecture
+
+ 2.0.1.4 Build numbers
+ -------------
+
+ A build number suplements the version number and is changed
+ when the *package maintainer* makes a change to the package but
+ the original source code and version number remains the same.
+
+ For example, I build a package of 'foo' version 0.14 for the
+ sparc. I have never built this package before, thus it becomes
+ foo-0.14-sparc-1.tgz
+ However, I realise that I haven't configured
+ the 'bar' parameter correctly in /etc/foo.conf. I fix it
+ and re-build the package. The package is now named
+ foo-0.14-sparc-2.tgz
+
+
+ 2.1 An overview of the creation of official Slackware packages
+ -----------------------------------------------------------
+
+ This section gives a brief introduction of the two methods of
+ used when building the official Slackware packages.
+
+
+ 2.1.1 'Clean' and 'dirty' builds
+ --------------------------
+
+ I am assuming the reader has some experience with Makefiles
+ and has compiled and installed a number of software packages.
+
+ 2.1.1.1 Clean builds
+ ------------
+
+ I term a 'clean' package one where you can specify a variable
+ to the 'make install' which contains the directory you wish to install
+ the package in, rather than installing it properly over the root file system.
+ For example:
+ # ./configure --prefix=/usr --sysconfdir=/etc
+ # make
+ # make install DESTDIR=/tmp/package-foo
+
+ With a 'Makefile' that honours the DESTDIR variable, this will
+ install the whole package into /tmp/package-foo. This directory
+ effectively is the 'root' directory '/' as far as the Makefile
+ is concerned.
+
+ From here you can use the Slackware 'makepkg' program and build
+ a package.
+
+ This is by far the safest and most preferred method by all
+ users that make packages.
+
+ You will find that DESTDIR is called prefix, TOPDIR and other names;
+ you need to examine the Makefile scripts in order to determine whether
+ it contains this functionality and if it does, then discover what
+ the variable name is.
+
+ 2.1.1.2 Dirty builds
+ ------------
+
+ A 'dirty' build is the name I give to source distribution archives
+ whose Makefile scripts do not have any provisioning to install
+ in an alternate directory other than root.
+
+ For these type of builds, you will typically do:
+ # ./configure --prefix=/usr --sysconfdir=/etc
+ # make
+ # make install
+
+ The package will then be installed on the root filesystem.
+
+ So how do you know what files were installed where and
+ even if you did, how do you pull all these files together in order
+ to run makepkg over them ?
+ That's the purpose of slacktrack! :-)
+
+
+ 2.1.1 SlackBuild and .build scripts
+ -----------------------------
+
+ Slackware has a number of packages by a great number of authors.
+ Some of the packages's source Makefiles honour a DESTDIR type
+ variable but others do not.
+
+ 2.1.1.2 SlackBuild scripts
+ ------------------
+
+ SlackBuild scripts can be 'interesting'. They are
+ scripts that install into a 'clean' environment (usually /tmp).
+
+ Some of the scripts follow the make install DESTDIR=
+ style, if the Makefile permits.
+
+ Others have a 'framework' or 'controller tarball' which is
+ a _packagename.t?z (note the prefixing underscore).
+
+ The SlackBuild script uses the Slackware 'explodepkg' script
+ to untar the contents of the _.t?z into the /tmp-package<name>
+ directory.
+ Slackbuild then runs 'make' to compile the binaries
+ and libraries, but then uses the 'cat' program such as:
+ # cat foobar > /tmp/package-foobar/usr/bin/foobar
+
+ By using 'cat', the *new* version of 'foobar' retains
+ the original permissions and ownerships that are in the
+ controller tar ball.
+
+ However, you may be wondering how, if the package does not
+ have a facility to install into somewhere other than root,
+ do we get the file names and permissions for the
+ controller _.t?z in the first place.
+ The answer is simple:
+ [a] find all files on the file system and dump to a file.
+ [b] compile and install the software
+ [c] find all files on the file system and compare the file
+ produced by the first 'find'. After a little pruning, you
+ have the list of files for the controller tar ball.
+
+
+ 2.1.1.3 .build scripts
+ ---------------
+
+ For those software distributions whose Makefile does not hounour
+ the DESTDIR type system, there are Slackware's .build scripts.
+
+ These scripts literally ./configure ; make ; make install
+ and copy docs and other goodies into the root file system.
+
+ One of the problems with these scripts is that they are
+ often incomplete -- they build and install the package but
+ do not gzip the man pages or strip the binaries and libraries;
+ this is done manually afterwards.
+
+ *These* are the scripts that slacktrack and altertrack were
+ written for.
+
+ * Note: Whilst some software's Makefiles may appear to honour
+ the DESTDIR variable, the Makefile *may* be broken which can
+ result in files missing or corrupt within your new package.
+ For example: I built Apache v2.0.48 and built a package using
+ make install DESTDIR. However, a problem exists in that some of
+ the Perl scripts it installs have *temporary build paths*
+ hard coded into the resulting scripts.
+ This is why you *may* find a .build instead of a SlackBuild
+ script within Slackware's source tree.
+
+ However, the primary reason is because the build script just
+ hasn't been updated to make use of DESTDIR. *
+
+
+ 2.2 slacktrack in the scheme of things
+ ----------------------------------
+
+ I follow Slackware-current quite closly. Often I want to
+ 'back port' a -current package to an earlier release of Slackware .
+ I can't simply upgrade with -current's package because it was
+ compiled for a newer GLIBC than Slackware 8.1's, for example.
+ For packages that use a 'clean' 'SlackBuild' script, this is
+ an easy job -- I simply run 'SlackBuild' on an 8.1 box.
+
+ However, for .build scripts, I needed a way of building packages
+ using Slackware's .build scripts.
+
+ I found a great program called 'CheckInstall' which fulfilled most of my
+ requirements. However, as time went on and I started building
+ more of Slackware's packages and writing my own build scripts, I found
+ that checkinstall was lacking some features that I required.
+ At this time I was also considering porting Slackware to run on
+ the ARM architecture and helping with the Splack (Slackware on SPARC project),
+ and therefore wanted a robust program that can deal with every .build script
+ I threw at it, and if it can't handle it, I needed to be able to make modifications.
+ The easiest way of doing this was to write my own script; thus
+ 'slacktrack' was born.
+
+ slacktrack is based on the *idea* behind 'CheckInstall', but uses
+ only my own code (and contributions from other users), and only contains
+ Slackware-specific facilities -- it can not build Debian or RedHat packages
+ and never will.
+
+ slacktrack does not have all of the facilities of CheckInstall either,
+ but then these are not required for building Slackware packages
+ from .build scripts.
+
+ Also, slacktrack only works with 'official' Slackware directory locations
+ and /usr/local.
+ For example, if your make install installs binaries in /opt/packagename/bin
+ and the man pages in anywhere other than /usr/man or /usr/local/man, then
+ slacktrack's relevant options (eg stripping libs, bins, gzman) will
+ not detect them.
+
+
+ 2.2.1 Using slacktrack with official .build scripts
+ ---------------------------------------------
+
+ Building a replicar Slackware package from a .build script is
+ typically fairly trivial with slacktrack.
+
+ If we wanted to build slackware-9.1's elvis, we could do
+ # cd slackware/slackware-9.1/source/a/elvis
+ # chmod 755 elvis.build
+ # slacktrack -jefkzp "elvis-2.1-i386-2.tgz" ./elvis.build
+
+ The resulting package (by default) be stored in
+ /tmp/built-slackwarepackages/
+
+ As already mentioned, some of the Slackware .build scripts
+ are incomplete with regard to gzipping man pages, stripping binaries
+ and so on -- fetchmail.build is one of them.
+ Therefore you can specify various options to slacktrack that
+ will take care of this for you.
+ The options in the example above :
+ j - compress libraries
+ e - chown root:bin /bin,/sbin,/usr/bin,/usr/sbin directories
+ f - chown root:bin files in the binary dirs listed above
+ k - strip binaries found in the binary dirs listed above
+ z - gzip man pages
+ p - the resulting Slackware package .t?z name
+
+ The way I re-create the packages is to build a 'trackbuild' script that
+ launches slacktrack with the required options and the name
+ of the Slackware .build script. You can find examples of such
+ scripts within the docs directory after installing slacktrack:
+
+ /usr/doc/slacktrack*/buildscript-examples/
+
+ You will also find that in Slackware versions 12.0 and upwards,
+ the .build scripts are accompanied by 'trackbuild' scripts because
+ slacktrack is used by the Slackware team to produce the packages.
+
+ 2.2.2 Writing your own .build scripts for slacktrack
+ ----------------------------------------------
+
+ There isn't any specific that you have to do to write a build
+ script for use with slacktrack -- the script name specified to
+ slacktrack doesn't even have to be a script - it can be a binary -
+ as long as it is executable, it is acceptable.
+
+ You can see some of my own build scripts that I have written
+ for use with slacktrack by looking in the documents directory
+ after installing slacktrack:
+
+ /usr/doc/slacktrack*/buildscript-examples/
+
+ 2.2.2.1 Making use of slacktrack's environment variables
+ -------------------------------------------------
+
+ slacktrack exports two environment variables:
+ SLACKTRACKFAKEROOT and SLACKTRACKSCRATCHDIR
+
+ SLACKTRACKFAKEROOT:
+ ````````````````````
+
+ The purpose of this to allow your .build script to access the
+ 'root' directory of the resulting package.
+ There are two scenarios where you may want to use this
+ variable:
+
+ 1. During the build:
+
+ The reason you may wish to do this is to pre-populate
+ the package with files that you may not wish to place directly
+ onto the root filesystem.
+ The package contents will only appear inside this directory
+ once your build script has finished, and slacktrack has determined
+ what to put into this directory.
+
+ In previous slacktrack versions which used a pseudo-root filesystem
+ (where the package contents were populated *during* the build), this
+ made sense, but in slacktrack v2.00, it is unlikely that you'd want
+ to use this vairable from the build script.
+
+ 2. Post-build -- cleanups after the build:
+
+ The most likely use of this script is to perform package cleanup
+ tasks after the build. This is mainly to perform tasks that slacktrack
+ does not handle itself - such as deleting known files/directories that
+ creep into packages (due to a system daemon such as CUPS), or setting
+ some file and directory permissions.
+
+ An example post build script is below.
+ A post build script can be specified by slacktrack's -R option:
+
+ # Incase you had CUPS running:
+ rm -rf etc/cups etc/printcap
+ # crond:
+ rm -rf var/spool/cron
+ rmdir var/spool
+
+ # perllocal.pod files don't belong in packages.
+ # SGMLSPL creates this:
+ find . -name perllocal.pod -print0 | xargs -0 rm -f
+
+ # Some doc dirs have attracted setuid.
+ # We don't need setuid for anything in this package:
+ chmod -R a-s .
+
+
+ SLACKTRACKSCRATCHDIR:
+ `````````````````````
+
+ The purpose of this variable is to provide some temporary
+ space to untar your source archives and so on. slacktrack
+ will manage the creation and deletion of this directory.
+
+ For example:
+ # cd ${SLACKTRACKSCRATCHDIR}
+ # tar zxvvf ${ORIGPATH}/source/foobar.tar.gz
+
+ You can see in some of the example 'non-slackware' scripts
+ how I have used these variables
+
+
+3.0 slacktrack in operation
+ -----------------------
+
+ The basic event flow is as follows:
+
+ [1] Parse command line arguments
+ -> Check they are OK, if not bomb out
+ [2] Launch the supplied build script
+ [3] Run any specified functions (eg gzman, strip bins, chowns) over the
+ package 'root' directory and contents
+ [4] Run Slackware's 'makepkg' program over the package contents
+ [5] Move the .t?z to the specified build store path
+ [6] Scan for any hard links that may be in the package
+ -> If any found, alert the user on screen and also
+ log to a packagename.hardlinks.log file in the build store path
+
+ The slacktrack shell script is fairly simple and well commented; it should be
+ relatively easy for anybody who understands bash to quickly comprehend what
+ is happening and why.
+
+ 3.1 How slacktrack finds which files have been installed
+ ----------------------------------------------------
+
+ In order to track the files and directories that have been installed
+ or changed, slacktrack follows this ordered process:
+
+ [1] Scans a pre-set list of directories on the filesystem and
+ logs the contents.
+ [2] Launches build script which installs the package onto the
+ filesystem
+ [3] Scans the filesystem once again
+ [4] Compares the differences in the before and after snapshots
+ [5] Copies the differences into a 'package root directory' and
+ runs makepkg over them.
+
+ In slacktrack version 1, we used 'installwatch' which overloaded
+ some of glibc's filesystem calls, creating new files and directories
+ into a pseudo-root filesystem, avoiding the need to install onto
+ the host's filesystem (and also allowing to build as a non-root user).
+ However, this library is ill maintained and even in the early days
+ when it worked well, it still had problems and workarounds were required.
+
+4.0 Example scripts
+ ---------------
+
+ Included with the slacktrack binary distribution are a number of example
+ scripts that hopefully should provide you with a basis of how to use slacktrack
+ to build from 'dirty' source distributions.
+
+ The examples are bundled in the documentation directory available
+ after installing slacktrack:
+
+ /usr/doc/slacktrack*/buildscript-examples/
+
+
+5.0 Known problems/features of slacktrack
+ -------------------------------------
+
+ Current problems:
+
+ [1] slacktrack doesn't have sufficient error checking.
+
+ I'm in two minds about *where* to put error checking, you see.
+ Do I go no further if the supplied build script exits with a non-zero
+ value?
+ No, that's a bad idea because what if you didn't write the build script?
+ it might be one of these qmail type binary installer programs that
+ you can't (easily without hacking the source) fix. The author may
+ have their own systems, and the program exits with a value that their
+ own controller script recognises as non-failure.
+
+ What should I do if makepkg has failed? You see it on screen
+ and in the logs anyway, plus makepkg is one of the last things
+ that slacktrack calls -- how can you recover?
+
+ That said, version 1.03 now has some error handling. There's still
+ not enough though, imo.
+
+ [2] No support for a default config file
+
+ I don't see the point. Each .build script is different
+ and although I typically use the same options to slacktrack
+ for most of my build scripts, I don't see why I'd need a
+ config file just to save 4 bytes or so in a trackbuild wrapper :-)
+
+
+6.0 New features
+ -------------
+
+ See the TODO file in the docs directory.
+
+ If you have any specific features you would like to see
+ included, or have found any bugs, please
+ email me <mozes@slackware.com>
+
+7.0 Licence
+ -------
+
+ slacktrack is distributed under BSD Licence.
diff --git a/source/d/slacktrack/slacktrack-project/docs/PACKAGE_BUILDING_CHECKLIST b/source/d/slacktrack/slacktrack-project/docs/PACKAGE_BUILDING_CHECKLIST
new file mode 100644
index 000000000..12817bebc
--- /dev/null
+++ b/source/d/slacktrack/slacktrack-project/docs/PACKAGE_BUILDING_CHECKLIST
@@ -0,0 +1,244 @@
+##########################################################################
+# Document: PACKAGE_BUILDING_CHECKLIST
+# Purpose : Check list for creation of Slackware packages
+# via .build scripts
+# Author..: Stuart Winter <mozes@slackware.com>
+# Date....: 04-Apr-2006
+# Version : 1.01
+##########################################################################
+# This document belongs to my 'slacktrack' program
+# http://www.slackware.com/~mozes
+##########################################################################
+# Changelog
+###########
+# v1.01 - 04-Apr-2006
+# * Added note about Slackware version 11 using root:root ownerships
+# for binary directories.
+# v1.00 - 01-Mar-2003
+# * Created
+###########################################################################
+Building the package via slacktrack
+-----------------------------------
+
+Let's assuming you're rebuilding the 'fetchmail' utilities package
+from Slackware-current.
+
+ # cd slackware/slackware-current/source/n
+ # slacktrack -jefkzcnp "fetchmail-6.2.0-sparc-2.tgz" "/bin/sh fetchmail.build"
+
+
+If you wanted to make slacktrack save the package into a different directory
+you would use the -b option, eg
+ # slacktrack -b "/data/sparc-packages/n/" \
+ -Qnp "fetchmail-6.2.0-sparc-2.tgz" "/bin/sh fetchmail.build"
+
+slacktrack now moves the package and its .txt description file into my
+Sparc port's 'n' series package directory.
+
+Your package compiles successfully and is now stored in
+/tmp/built-slackwarepackages/
+as fetchmail-6.2.0-sparc-2.tgz
+
+Testing the package
+-------------------
+
+We must now manually check the integrity of the resulting package.
+
+The easiest way of examining the package is to run it through less.
+ # less fetchmail-6.2.0-sparc-2.tgz
+
+[a] The 'install/slack-desc' file
+ -----------------------------
+
+ This is a text file in the standard 'slack-desc' format.
+ It gives a brief description of the package and any relevant
+ information.
+
+ For examples you should look in the source directory
+ of any slackware package.
+
+[b] The 'install/doinst.sh' file
+ ----------------------------
+
+ Unless you know what you are doing, your installation scripts should
+ only refer to relative path names.
+ For example:
+
+ if [ ! -f etc/foo.conf ]; then
+ mv -f etc/foo.conf.new etc/foo.conf
+ fi
+
+ This is because the user can specify a different root directory
+ when installing the package. If your script uses absolute path names
+ (path names begin with a /) then this script will not work as expected because
+ installpkg only changes into the specified root directory and runs the script;
+ it does not perform a chroot or anything similar.
+
+[c] Check permissions
+ -----------------
+
+ Ensure that there are no globally writeable files and directories
+ that should not be there.
+ PHP 4.3.0 is an all time classic example of why you should check
+ your packages; it had globally writeable files in /usr/lib/php !
+
+ You can feed slacktrack the --chmod-og-w option to help you
+ deal with globally writeable files. However, it's best if you
+ do it yourself from your script, and using this option is no
+ excuse to not check !
+
+[d] Check file & directory ownerships
+ -----------------------------------
+
+ Unless specifically required, the files and directories should
+ be owned by 'root' in the group 'root'.
+ You may find that some source distributions install their files
+ with different UIDs because they've simply copied them from the
+ source ball -- so the files end up being owned by 'bob.users'
+ or similar.
+
+ However, also see the next check regarding binaries.
+
+[e] Check binary file & binary directory ownerships
+ -----------------------------------------------
+
+ Prior to Slackware version 11, the standard was to have binaries
+ installed in
+ /bin,/sbin,/usr/bin,/usr/sbin
+ as owned by root:bin
+
+ The directories (above) themselves should also have these ownerships.
+
+ You can feed slacktrack the following options to help here:
+ -e, --chown-bdirs-root-bin
+ This runs chown root.bin over the binary directories listed above
+ -f, -chown-bfiles-root-bin
+ This runs chown root.bin over the FILES inside the binary directories
+ listed above.
+
+ Again, you should check the package incase there has been a problem.
+
+ The -e and -f options are provided because *Slackware*'s .build scripts
+ do not do chown them for you -- it is done manually by Pat.
+
+ With Slackware version 11, those binary directories are owned by root:root.
+ For slacktrack you can use the -m operator to have this set for you.
+
+[f] Ensure man pages are gzipped & any broken symlinks are fixed
+ ------------------------------------------------------------
+
+ Slackware's packages all (or at least should) have gzipped man pages.
+ The man pages reside in numbered directories ('sections') within
+ /usr/man
+ eg man pages in section 1 reside in /usr/man/man1
+
+ man pages that are *not* gzipped will not have a .gz extension.
+ For example, the mkdir man page that is not gzipped would be:
+ /usr/man/man1/mkdir.1
+ The gzipped version is
+ /usr/man/man1/mkdir.1.gz
+
+ Some binaries behave differently when called with different names, or
+ have different names for historical purposes.
+ Such an example are packages from the 'floppy' Slackware package.
+ /usr/bin/xdfformat is a symlink to /usr/bin/xdfcopy
+ The man page is no different:
+ xdfformat.1 -> xdfcopy.1
+ By default, the Slackware 'floppy.build' script does not gzip man pages.
+ It's easy to gzip man pages - slacktrack does this
+ find usr/man -type f -print0 | xargs -0 gzip -9
+ However, if you do an ls -l on the man1 directory, you will see
+ that we have broken the xdffformat.1 symlink to xdfcopy.1
+ because xdfcopy.1 is now named xdfcopy.1.gz
+ The way to fix this would be to
+ # rm -f xdffformat.1 ; ln -s xdfcopy.1 xdfformat.1
+
+ The easiest way to ensure your man pages are gzipped and all symlinks
+ are restored is to feed slacktrack the -z or --gzman option
+ slacktrack will take care of your symlinks for you.
+
+ Again, there is no excuse not to check manually !
+
+[g] strip binaries and shared objects
+ ---------------------------------
+
+ In order to reduce the size of the binary once installed and package,
+ Slackware strips the libraries and binaries.
+
+ For example, if we wanted to strip the grep program we would do
+ # strip --strip-unneeded /bin/grep
+
+ Stripping binaries from .build scripts called via slacktrack
+ is fairly easy. There are two ways of doing it:
+ [1] Let slacktrack take care of it
+ -j or --striplib will cause slacktrack to strip
+ any executable .so files it finds in /lib and /usr/lib
+
+ -k or --stripbin will cause slacktrack to strip
+ any executable binaries it finds in /bin,/sbin,/usr/bin,/usr/sbin
+
+ [2] Do it yourself in the your build script - this is the preferred way.
+ slacktrack exports an environment variable named
+ SLACKTRACKFAKEROOT
+ This enables you to do something like this
+ # find ${SLACKTRACKFAKEROOT}/usr/lib -type f -name *.so -print0 | xargs -0 strip
+ Using the environement variable prevents you from having to know
+ all of the library & binary file names, as you will only find
+ files that your build script has created in the fake root directory.
+
+ * Note: You may find that some binaries or libraries break when they
+ are stripped. This is because they require symbols that strip
+ removes. This is why it's best to do your own binary and
+ library stripping and individually strip the required files rather
+ than letting slacktrack do it for you *
+
+[h] Check zero length files
+ -----------------------
+
+ slacktrack uses Slackware's makepkg program which should identify any
+ zero length files for you. However, it's worth checking *why* any files
+ are of zero length -- you will find that some of them are meant to be;
+ the etc-*-noarch-*.tgz package's /etc/mtab file is an example of this.
+
+ There should be no occasion for a binary or .so to be of zero bytes.
+
+ If you're unsure of any zero length files, check out the next point.
+
+[i] Compare your package with the official package
+ -----------------------------------------------
+
+ If you are rebuilding/porting a Slackware package from -8.1 or -current
+ (or any other version for that matter), then one of the easiest ways
+ to give you some confidence that your package is official-looking is to
+ simply examine the official package.
+
+ This will allow you to see whether the file & dir permissions are the
+ same as your own package, verify any zero length files and so on.
+
+ Please note that if you DO find any zero length files or anything
+ that you can easily PROVE is broken then *DO* submit a report
+ to Slackware so that it can be fixed.
+
+ If you're porting Slackware packages to a different architecture then
+ obviously don't be overly concerned about file size differences -- although
+ it's worth making sure you've stripped your binaries. You may actually
+ find that some of the Slackware official packages aren't stripped.
+
+[j] Ensure your package root directory is chmod 755
+ -----------------------------------------------
+
+ prisere [packages] # tar ztvvf foo.tgz
+ drwx------ root/root 0 2003-03-01 18:46:17 ./
+
+ If you see this, your package IS BROKEN.
+
+ Installing this package will render your system seriously
+ broken because it will chmod 700 the root directory !
+
+ By default slacktrack will chmod 755 the root directory, but
+ as with everything else, you should check !
+
+
+
+That's about it. If you can think of any other checks then please
+email <mozes@slackware.com>
diff --git a/source/d/slacktrack/slacktrack-project/docs/PACKAGE_BUILDING_URLS b/source/d/slacktrack/slacktrack-project/docs/PACKAGE_BUILDING_URLS
new file mode 100644
index 000000000..801b8aa0a
--- /dev/null
+++ b/source/d/slacktrack/slacktrack-project/docs/PACKAGE_BUILDING_URLS
@@ -0,0 +1,38 @@
+These are a few URLs that provide information about
+how to build packages for Slackware Linux:
+
+ Slackware Linux Essentials book
+ -------------------------------
+
+ http://www.slackware.com/book/index.php?source=x4132.html
+
+
+ Linux packages
+ --------------
+
+ This web site has a great number of pre-built packages for
+ Slackware.
+
+ It also has a HOWTO about building packages:
+
+ http://www.linuxpackages.net/howto/howto.php?page=package
+
+
+ Slackbuilds.org
+ ------------------
+
+ This site has a huge repository of build scripts for Slackware.
+ They are all 'SlackBuild' type -- eg the 'clean' builds
+ (the preferred method -- i.e. these do not need slacktrack)
+
+ http://www.slackbuilds.org
+
+
+ Slackware's official build scripts
+ ----------------------------------
+
+ I also recommend that you look at the official Slackware build
+ scripts that can be found on the FTP site in the 'source'
+ directory of the distribution
+ (e.g. slackware/slackware-9.1/source)
+
diff --git a/source/d/slacktrack/slacktrack-project/docs/RELEASE_NOTES b/source/d/slacktrack/slacktrack-project/docs/RELEASE_NOTES
new file mode 100644
index 000000000..02876d898
--- /dev/null
+++ b/source/d/slacktrack/slacktrack-project/docs/RELEASE_NOTES
@@ -0,0 +1,137 @@
+slacktrack version 2.00
+Release notes: 17th September 2008
+===================================
+
+Highlights:
+-----------
+
+slacktrack no longer uses 'installwatch' to track the installation
+process -- what was previously called 'altertrack' has been turned
+into 'slacktrack'.
+
+slacktrack's method of tracking package installations is to
+have the package installed directly onto the host's filesystem.
+
+This is for a number of reasons:
+
+ 1. installwatch is ill maintained and was failing to work correctly
+ with new versions of glibc and GNU 'coreutils'.
+
+ 2. installwatch could not track statically compiled binaries,
+ meaning that if a statically compiled binary was used to
+ manipulate the filesystem in any way, these manipulations would
+ not be reflected in your package contents.
+
+ 3. With virtualisation -- QEMU, VMWare, SUN's VirtualBox -- being so
+ readily available, and allowing filesystem 'snapshots', it's
+ easier and easier to spin up a development operating system and
+ build and install directly onto the root filesystem, thus getting
+ a complete package.
+
+Upgrading your build scripts from slacktrack version 1.x
+--------------------------------------------------------
+
+1. slacktrack internal variables
+ -----------------------------
+
+ $SLACKTRACKFAKEROOT
+
+ This variable points to the location of the package's
+ root filesystem (usually /var/tmp/<someplace>).
+ Using slacktrack 1.x, you could perform operations on the
+ package contents from your build script *during* the build
+ process.
+
+ In slacktrack 2.x, the package root directory is only populated
+ after the build script has finished.
+
+ However, the variable can still be used from a post-build
+ script.
+ You can use slacktrack's '-R' operator to specify a post-build
+ script. In the example below, the post build script is
+ called 'postbuildfixes.sh' and resides in the same directory
+ as the 'trackbuild' script.
+
+ ** Note: Ensure that your post-build script is chmod 755. **
+
+# Launch the build script:
+altertrack \
+ --notidy \
+ --showdeps \
+ -T $TMP \
+ -l $CWD/build.$ARCH.log \
+ -R $CWD/postbuildfixes.sh \
+ -b $PKGSTORE \
+ -zIKASmg \
+ -Ocp $PKGNAM-$PKGVERSION-$ARCH-$BUILD.tgz ./linuxdoc-tools.build
+
+ The contents of this post build script can be something such as:
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+#!/bin/bash
+
+# Once altertrack has determined what the contents of the package
+# should be, it copies them into $SLACKTRACKFAKEROOT
+# From here we can make modifications to the package's contents
+# immediately prior to the invocation of makepkg: altertrack will
+# do nothing else with the contents of the package after the execution
+# of this script.
+
+# If you modify anything here, be careful *not* to include the full
+# path name - only use relative paths (ie rm usr/bin/foo *not* rm /usr/bin/foo).
+
+# Enter the package's contents:
+cd $SLACKTRACKFAKEROOT
+
+# OpenSP creates this symlink; we delete it.
+if [ -L usr/share/doc ]; then
+ rm -f usr/share/doc
+fi
+
+# Incase you had CUPS running:
+rm -rf etc/cups etc/printcap
+# crond:
+rm -rf var/spool/cron
+rmdir var/spool
+
+# perllocal.pod files don't belong in packages.
+# SGMLSPL creates this:
+find . -name perllocal.pod -print0 | xargs -0 rm -f
+
+# Some doc dirs have attracted setuid.
+# We don't need setuid for anything in this package:
+chmod -R a-s .
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+
+2. Build script changes
+ --------------------
+
+ If your build scripts were more sophisticated and took advantage of
+ the way installwatch used a pseudo root filesystem, please be acutely
+ aware that your build script now runs on the host's live operating system;
+ so you need to be more careful. However, as suggested -- run only on development
+ installations.
+
+3. Additional files creeping into the packages
+ -------------------------------------------
+
+ Due to some daemons making changes to their config files whilst your build
+ is in flight, you may find some additional files have crept into your package
+ which you were not expecting.
+
+ You may wish to turn off the following daemons before starting a build:
+ CUPS
+ crond
+ sendmail
+ ypbind (NIS)
+ ypserv (NIS)
+
+ If you look at the example post build script above, you can see that it
+ removes some CUPS and crond residue.
+ Whilst it would be possible to remove these paths from slacktrack's scan
+ locations, some users may wish their package to place data in those directories;
+ so you need to make your own adjustments and checks for this.
+
+
+END.
diff --git a/source/d/slacktrack/slacktrack-project/docs/SLACKDTXT.examples b/source/d/slacktrack/slacktrack-project/docs/SLACKDTXT.examples
new file mode 100644
index 000000000..9a57620a7
--- /dev/null
+++ b/source/d/slacktrack/slacktrack-project/docs/SLACKDTXT.examples
@@ -0,0 +1,103 @@
+##########################################################################
+# Document: SLACKDTXT.examples
+# Purpose : Provide examples of how one may use slackdtxt
+# Author..: Stuart Winter <mozes@slackware.com>
+# Version : 1.00
+# Date....: 02-Mar-2003
+###########################################################################
+
+1.0 Building ProFTPD from Slackware's source directory
+ --------------------------------------------------
+
+In this example, I have my slackware-current source tree
+stored in the directory ' /data2 '
+
+I want to compile ProFTPD using Slackware's SlackBuild script, but I want
+to move the package from /tmp (where SlackBuild stores it)
+into my Slackware binary directory
+ /data2/slackware-current/slackware/n/
+and I also want to create a .txt description file in the same binary directory.
+
+ 1. Enter the slackware-current source directory
+ --------------------------------------------
+
+ meths [proftpd] # pwd
+ /data2/slackware-current/source/n/proftpd
+ meths [proftpd] # ls
+ _proftpd.tar.gz etc proftpd-1.2.7.tar.bz2 proftpd-1.2.7.tar.bz2.asc proftpd.SlackBuild slack-desc
+
+
+ 2. Compile ProFTPd using the supplied SlackBuild script.
+ -----------------------------------------------------
+
+ meths [proftpd] # ./proftpd.SlackBuild
+
+ [ .. snip lots of text as the package is compiled and built .. ]
+
+ Our proftpd package is built in /tmp as this is where SlackBuild stores it.
+
+ meths [proftpd] # ls -l /tmp/proftpd-1.2.7-i386-1.tgz
+ -rw-r--r-- 1 root root 503169 Mar 3 00:43 /tmp/proftpd-1.2.7-i386-1.tgz
+ meths [proftpd] #
+
+
+ 3. Create the .txt file and move the package into the binary distribution directory
+ ---------------------------------------------------------------------------------
+ meths [proftpd] # slackdtxt -d /data2/slackware-current/slackware/n/ /tmp/proftpd-1.2.7-i386-1.tgz
+ slackdtxt: Copying package to destination directory ....done
+ slackdtxt: Verifying the version of the package in the destination directory ....done
+ slackdtxt: Attempting to extract install/slack-desc from the package ....done
+ slackdtxt: proftpd-1.2.7-i386-1.txt created
+ slackdtxt: Deleting the original package ....done
+ meths [proftpd] #
+
+ In this instance I have extracted the slack-desc file from the /tmp/proftpd-1.2.7-i386-1.tgz
+ package. Because I was in the source directory, I could have used the local slack-desc
+ file and saved the overhead of having to untar. In order to do this I could have done:
+
+ # slackdtxt -d /data2/slackware-current/slackware/n/ -s slack-desc /tmp/proftpd-1.2.7-i386-1.tgz
+
+
+Example 2: Creating .txt files from a bunch of packages
+ --------------------------------------------
+
+In this example, I have built a number of packages already. They are
+stored in my binary distribution directory (/data2/slackware-current/slackware)
+but the packages do not have corresponding .txt files.
+
+I will use slackdtxt to create .txt files in the same directory as the package files.
+
+
+ 1. Enter the slackware-current binary distribution directory
+ ==========================================================
+
+ meths [n] # pwd
+ /data2/slackware-current/slackware/n
+
+ These are the packages I have built previously.
+
+ meths [n] # ls
+ htdig-3.1.6-i386-2.tgz mod_ssl-2.8.12_1.3.27-i386-1.tgz mutt-1.4i-i386-1.tgz wget-1.8.2-i386-2.tgz
+ meths [n] #
+
+ 2. Create .txt files for all corresponding package files
+ =====================================================
+
+ meths [n] # slackdtxt *.tgz
+ slackdtxt: Attempting to extract install/slack-desc from the package ....done
+ slackdtxt: htdig-3.1.6-i386-2.txt created
+ slackdtxt: Attempting to extract install/slack-desc from the package ....done
+ slackdtxt: mod_ssl-2.8.12_1.3.27-i386-1.txt created
+ slackdtxt: Attempting to extract install/slack-desc from the package ....done
+ slackdtxt: mutt-1.4i-i386-1.txt created
+ slackdtxt: Attempting to extract install/slack-desc from the package ....done
+ slackdtxt: wget-1.8.2-i386-2.txt created
+
+ meths [n] # ls
+ htdig-3.1.6-i386-2.tgz mod_ssl-2.8.12_1.3.27-i386-1.tgz mutt-1.4i-i386-1.tgz wget-1.8.2-i386-2.tgz
+ htdig-3.1.6-i386-2.txt mod_ssl-2.8.12_1.3.27-i386-1.txt mutt-1.4i-i386-1.txt wget-1.8.2-i386-2.txt
+ meths [n] #
+
+ All .txt files are now created.
+
+
diff --git a/source/d/slacktrack/slacktrack-project/docs/SLACKTRACK.examples b/source/d/slacktrack/slacktrack-project/docs/SLACKTRACK.examples
new file mode 100644
index 000000000..924f932f7
--- /dev/null
+++ b/source/d/slacktrack/slacktrack-project/docs/SLACKTRACK.examples
@@ -0,0 +1,34 @@
+
+If you are looking for example scripts to help you use
+slacktrack please look in the documentation directory:
+
+ /usr/doc/slacktrack*/buildscript-examples/
+
+Quick example:
+--------------
+
+I will build the elvis editor that you can find in Slackware's
+'a' series. This is looking at an older version of the Slackware
+source tree (v 9.1) -- the build script has since been replaced
+by a 'SlackBuild', but this example still serves as a good example
+reference:
+
+bourbon [root] # cd slackware-9.1/source/a
+bourbon [elvis] # slacktrack -gfenzKSUIp elvis-2.41-i486-1.tgz ./elvis.build
+bourbon [elvis] # tar ztvvf /tmp/elvis-2.41-i486-1.tgz | head -n9
+drwxr-xr-x root/root 0 2003-07-11 09:26:05 ./
+drwxr-xr-x root/root 0 2003-07-11 09:26:04 usr/
+drwxr-xr-x root/bin 0 2003-07-11 09:26:05 usr/bin/
+-rwxr-xr-x root/bin 301280 2003-07-11 09:26:05 usr/bin/elvis
+-rwxr-xr-x root/bin 19956 2003-07-11 09:26:05 usr/bin/ref
+-rwxr-xr-x root/bin 15160 2003-07-11 09:26:05 usr/bin/elvtags
+-rwxr-xr-x root/bin 936180 2002-06-08 00:15:29 usr/bin/vim
+drwxr-xr-x root/root 0 2003-07-11 09:26:01 usr/share/
+drwxr-xr-x root/root 0 2003-07-11 09:26:04 usr/share/elvis-2.1_4/
+bourbon [elvis] #
+
+As you can see, we now have an elvis package with the
+correct ownerships set on the binary files and so on and
+so forth.
+
+Stuart.
diff --git a/source/d/slacktrack/slacktrack-project/docs/TODO b/source/d/slacktrack/slacktrack-project/docs/TODO
new file mode 100644
index 000000000..28c22b04a
--- /dev/null
+++ b/source/d/slacktrack/slacktrack-project/docs/TODO
@@ -0,0 +1,65 @@
+To do list
+----------
+
+Likely to be done:
+==================
+
+This list represents changes that I am likely to implement myself:
+
+Thinking about it:
+==================
+
+1. Modify slacktrack to do a couple of scans of the filesystem prior to
+ launching the build script.
+ It'd compare the scans and add any differences to an exclude list -- since
+ any such differences were not generated by the build script, thus should not
+ be in the package.
+ The purpose of this is to reduce the possibility of non package material making
+ its way into the final .tgz.
+ *However*, there's nothing to say that some arbitary cron job won't launch and
+ modify the filesystem anyway -- so this sort of feature would only lead to
+ confusion in the long run.
+
+2. Allow addition of exclude/additional scan dirs without having to replace
+ the existing list.
+ Suggested by: Eduard Rozenberg
+
+3. Compare contents of new package and warn about any overlapping files.
+ This is harder to do that it sounds because the user may not be removing
+ the previous package (although it's suggested that you do) because it's
+ an integral system library or binary and they simply want to upgrade
+ it and produce a package. This would always talk about overlap.
+ We could get the 'base package name' of the supplied package
+ and then remove it from any found ovelap results, but it seems
+ a bit slow.
+
+Unlikely to be done:
+====================
+
+This list represents future additions that (for one reason or another) I am
+unlikely to implement. However, feel free to submit a patch (but ask me first -
+I don't like receiving unsolicited attachments!).
+
+2. Add an option to rename/move .conf files to conf.new
+ Suggested by Geoffrey Sanders, based on an option protopkg supports.
+
+ [..]
+ > altertrack to (during it's file scan of new files for the package) to
+ > move any newly created .conf (or any other type of config files) to a
+ > *.new extension. Don't know how much work this would be...but thought
+ > that it might be nice to add for those of us who may forget to 'backup'
+ > any config's that may get stepped on.
+ [..]
+
+ I must admit that I'm not overly keen on this idea - it sounds too much
+ like checkinstall -- add a feature that mainly works but breaks when you
+ least expect it.
+
+ Just moving the .conf to .conf.new is okay in theory but it may:
+ a) catch people out who rely on the feature but where the config
+ file isn't called '*.conf'
+
+ b) if it updates the doinst.sh script, the shell script which changes
+ the file name may need to be before or after the symlink creation
+ code (if there is any).
+
diff --git a/source/d/slacktrack/slacktrack-project/docs/USAGE b/source/d/slacktrack/slacktrack-project/docs/USAGE
new file mode 100644
index 000000000..46ec1f1cc
--- /dev/null
+++ b/source/d/slacktrack/slacktrack-project/docs/USAGE
@@ -0,0 +1,8 @@
+
+slacktrack and slackdtxt have full section 8 man pages. Please do
+
+ # man slacktrack
+ # man slackdtxt
+
+
+Stuart Winter <mozes@slackware.com>
diff --git a/source/d/slacktrack/slacktrack-project/docs/WARNINGS b/source/d/slacktrack/slacktrack-project/docs/WARNINGS
new file mode 100644
index 000000000..0ba7e31cb
--- /dev/null
+++ b/source/d/slacktrack/slacktrack-project/docs/WARNINGS
@@ -0,0 +1,38 @@
+1. Do not Use on production servers
+ ---------------------------------
+
+ Do NOT run slacktrack on production servers.
+
+ It should only be run on a development box.
+
+ This is because slacktrack version 2.0 and upwards install onto
+ the filesystem of the server, rather than into a pseudo root.
+
+2. Slackware versions
+ ------------------
+
+ slacktrack has been tested on:
+ - Slackware 12.0, 12.1, 12.2, 13.0
+ - ARMedslack, all versions.
+
+ It may works on previous releases of Slackware, it may not.
+
+3. slacktrack default working space
+ --------------------------------
+
+ By default, slacktrack puts its work space in
+ /var/tmp/<randomnumber>slacktrack
+
+ It is essential that you have enough disk space on the
+ partition on which /var/tmp resides - particularly if you use
+ ${SLACKTRACKSCRATCHDIR}
+
+ If you do not have enough space in /var/tmp then you can
+ pass --tempdir to slacktrack to change the base temporary directory.
+
+ eg you may do
+ # slacktrack --tempdir /tmp/slacktrack -Qp "foobar-4.1-sparc-2.tgz" "/bin/sh foobar.build"
+
+
+Stuart Winter <mozes@slackware.com>
+
diff --git a/source/d/slacktrack/slacktrack-project/docs/buildscript-examples/README b/source/d/slacktrack/slacktrack-project/docs/buildscript-examples/README
new file mode 100644
index 000000000..5182cc992
--- /dev/null
+++ b/source/d/slacktrack/slacktrack-project/docs/buildscript-examples/README
@@ -0,0 +1,19 @@
+This directory contains example scripts on which you may
+base your own build scripts.
+
+Note that the packages and versions are not current, but their
+purpose is to serve as examples.
+
+Slackware's packaging standard is that documents in /usr/doc are
+chmod 644, so these examples are archived to retain the execute
+permissions on the build scripts.
+
+Please extract the archive to /tmp to begin:
+Example:
+
+mkdir -pm /tmp/slacktrack
+tar xf examples.tar.bz2 -C /tmp/slacktrack
+
+--
+Stuart Winter <mozes@slackware.com>
+17th Sept 2008