summaryrefslogtreecommitdiffstats
path: root/source/d/slacktrack/slacktrack-project/docs/PACKAGE_BUILDING_CHECKLIST
diff options
context:
space:
mode:
Diffstat (limited to 'source/d/slacktrack/slacktrack-project/docs/PACKAGE_BUILDING_CHECKLIST')
-rw-r--r--source/d/slacktrack/slacktrack-project/docs/PACKAGE_BUILDING_CHECKLIST244
1 files changed, 0 insertions, 244 deletions
diff --git a/source/d/slacktrack/slacktrack-project/docs/PACKAGE_BUILDING_CHECKLIST b/source/d/slacktrack/slacktrack-project/docs/PACKAGE_BUILDING_CHECKLIST
deleted file mode 100644
index 12817bebc..000000000
--- a/source/d/slacktrack/slacktrack-project/docs/PACKAGE_BUILDING_CHECKLIST
+++ /dev/null
@@ -1,244 +0,0 @@
-##########################################################################
-# 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>