Submission Guidelines
The SlackBuilds.org project is maintained by a small group of people,
but we want the scripts in our repository to be representative of the
entire Slackware user community. There's no way that the few of us can
possibly write scripts for all of the extra applications that users want
to have, so we depend on YOU to help us out. If there's some application
that you use, and we don't have it in our repository already, please
consider writing a build script for it and submitting it to us for possible
inclusion. See below for our submission requirements.
Submit scripts for possible inclusion using our
SlackBuilds Upload Form, but make sure you follow the guidelines
below. Do not include the source code or your upload will be
rejected.
Before expending time and effort in writing a build script, be sure to
search our repository to make sure one doesn't already exist. Also, you
may wish to have a look at the pending queue to
see if someone else has already submitted what you're planning to do.
You will still need to read the list of requirements, but we have a
SlackBuild Script Template available
if you would like to download it for easy editing.
All submissions should be an archive, compressed or uncompressed -
either one is fine - (tar, tar.gz, or tar.bz2) of a directory (named
according to the application's name) containing at least the following
files:
$PRGNAM.SlackBuild (for instance, rdesktop.SlackBuild)
slack-desc
README
$PRGNAM.info (for instance, rdesktop.info)
$PRGNAM.SlackBuild Requirements
- Use
/bin/sh only - not /bin/bash or
some other shell. Also, do not use any bash- or other shell-specific
extensions.
#!/bin/sh
- Clearly indicate what the script builds:
# Slackware build script for torsmo
- You will need to note the author of the script and add licensing
information (if you choose to do so). The only requirement we have
for licensing is this: if you choose to license your script, the
license must be open-source and allow for modification and
redistribution of the modified version.
- If you wish to license your scripts under a GPL or
variant, then be sure to include a copy of the license
with your submission if the license requires it. We
don't encourage these licenses, as the license is often
much longer than the script itself, but that's
your call.
- If you do not specify a license, then your submission
is assumed to be public domain, and as such, anyone can
freely modify and/or distribute it with no restrictions.
If you do not include licensing information, you can note
the author of the script using a format something like this:
# Written by (your name) (your contact information)
- Use variables as much as possible within your script
(as opposed to hard-coding values):
PRGNAM=torsmo
VERSION=0.18
ARCH=${ARCH:-i486}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
- Make sure the following lines are present:
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
fi
- The i686 option is included due to the fact that
some people prefer to compile add-on packages optimized
for it (though some would question the benefits of
doing so).
- Due to incompatibilities with S/390 and 64-bit
derivatives of Slackware, those architectures are not
required or supported, and we will not respond to bug
reports on those platforms.
- Build in error checking where possible; for instance, the
following would cause the SlackBuild script to exit if the
decompress/extract operation fails:
tar xvf $PRGNAM.$VERSION.tar.gz || exit 1
- Packages should be built with prefix of /usr, system
configuration directory of /etc (except in special cases, such
as /etc/$APP), and local state directory of /var.
- Strip libraries and binaries
- Compress man pages - be sure to account for symlinks in the
manpage directory if any exist.
- Compress info pages and remove the "dir" file installed by the
application.
- Leave finished package in $OUTPUT
The README file
The README file should contain at least the following information:
- A descripton of the application. The most common way
to do this is by including the contents of the slack-desc
file (without the "$PRGNAM:" portion), but you may deviate
from this if needed. Have a look at some of the other
README files to get an idea of what is expected.
- Any application and/or library dependencies that are
not included in the official Slackware package set; you
should also note the home page of the dependencies.
- Any other relevant information that might be useful
to someone using the script:
- Is special configuration needed before
building the package?
- Is special configuration needed after
installing the package?
- Is this application incompatible with
some other application?
The $PRGNAM.info file
The info file should contain the following information in
the exact format given below:
- PRGNAM="(name of application)"
- VERSION="(version of application)"
- HOMEPAGE="(homepage of application)"
- DOWNLOAD="(direct download link of application source tarball)"
- MD5SUM="(md5sum of source tarball)"
- MAINTAINER="(name of SlackBuild script maintainer)"
- EMAIL="(email address of author)"
For example, see the following
rdesktop.info file:
PRGNAM="rdesktop"
VERSION="1.4.1"
HOMEPAGE="http://rdesktop.org"
DOWNLOAD="http://downloads.sourceforge.net/rdesktop/rdesktop-1.4.1.tar.gz"
MD5SUM="78dd2bae04edf1cb9f65c29930dcc993"
MAINTAINER="Robby Workman"
EMAIL="rworkman@slackbuilds.org"
Pay attention to the fact that all values are enclosed in double
quotes; this is a requirement. Other double quotes embedded
in the string are not allowed.
Note that the MD5SUM entry contains
only the actual
checksum rather than the full output of the
md5sum
command.
Note that the MAINTAINER entry is subject to change; the author
of the script should be noted in the actual script itself, and
while it will often (usually) be the same as the MAINTAINER,
this allows a script author to turn over maintenance of the
script to another individual.
Other concerns
- No custom patches unless absolutely necessary; if at all
possible, we want to maintain the Slackware philosophy of
distributing "clean" stuff - if it's not in the upstream
sources, then it probably dosn't need to be in our scripts.
- As a general rule, we do not accept SlackBuild scripts
of software that is included as part of Slackware; however,
exceptions may be made by the admin staff on a case-by-case
basis.